Sql вставить строку в строку: примеры вставки строк в таблицу БД MySQL
Содержание
Нельзя добавить в SQL базу строки с апострофом
vovsla
Осваивающий
#1
При попытке добавить в базу строку содержащую апостроф выдается ошибка синтаксиса, как это обойти?
alex33
Скриптер
#2
Попробуй или обычные кавычки «»
или обратные опострофы «
Numbot
In God We Trust
#3
Передача параметров запроса в БД всегда требует ‘_’ кавычек:
Например:
select blah
from blahblah
where blahh like ‘blah’
Т. е. по идее должно быть так: »’
vovsla
Осваивающий
#4
alex33 сказал(а):
Попробуй или обычные кавычки «»
или обратные опострофы «Нажмите, чтобы раскрыть…
Раньше я заменял опострофы обратными это работает, но сейчас в базе нужны именно обычные опострафы.
В принципе можно было бы строку загонять в ASCII массив, потом из массива делать строку и записывать в базу, но т.к. объем данных довольно большой хотелось бы избавится от лишних действий
Добавлено:
Сообщение автоматически объединено:
Что-то я сразу не догадался поиграться с кавычками, вот такой вариант работает
If StringInStr($String, "'") Then $String=StringReplace($String, "'", "''")
madmasles
Модератор
#5
Vovsla,
?
vovsla
Осваивающий
#6
madmasles сказал(а):
Vovsla,
?Нажмите, чтобы раскрыть.
..
В чем вопрос?
Если в строке к каждой одинарной кавычке поставить еще одну одинарную кавычку, то запись в базу проходит без ошибок и с нужным кол-вом кавычек, проверял со строками от 1 до 10 кавычек, все ОК
НОУ ИНТУИТ | Лекция | Расширенное описание T-SQL
< Лекция 19 || Лекция 20: 12345678 || Лекция 21 >
Аннотация: Более углубленное изучение T-SQL продолжается в этой лекции. Рассматриваются новые конструкции: IF…ELSE, WHILE и CASE. Новые операторы, ранее не задействованные в примерах. Примеры и дополнительная информация, в сочетании со справочной системой SQL Server (Books Online) эффективно помогут вам разобраться во всех тонкостях нового материала.
Ключевые слова: операторы, identity, основной синтаксис, skinning, оператор DELETE, hint, junk, условия поиска, e-taxes, подзапрос, DESCRIBE, блок операторов, предупреждающее сообщение, aggregation, average, royalty, неявное преобразование типа, e-payment
intuit.ru/2010/edi»>Мы познакомились с этими операторами в предыдущих лекциях. Здесь также описываются ключевые слова T-SQL, используемые для управления последовательностью выполнения операторов. Вы можете использовать эти операторы и ключевые слова в любом месте, где применяется T-SQL, – в командных строках, сценариях, хранимых процедурах, в пакетных заданиях и прикладных проблемах. В частности, мы рассмотрим операторы обработки данных INSERT, UPDATE и DELETE (см. «лекцию 13»
), а также программные конструкции IF…ELSE, WHILE и CASE.
Прежде чем перейти к нашей основной теме, мы создадим таблицу items для использования в наших примерах. (Мы создадим эту таблицу в базе данных MyDB.) Ниже приводятся операторы T-SQL, используемые для создания таблицы items:
USE MyDB GO CREATE TABLE items ( item_category CHAR(20) NOT NULL, item_id SMALLINT NOT NULL, price SMALLMONEY NULL, item_desc VARCHAR(30) DEFAULT 'No desc' ) GOintuit.ru/2010/edi»>Колонка item_id могла бы вполне подойти для свойства IDENTITY. (См. раздел «Добавление свойства IDENTITY» в
«лекции 10»
). Но поскольку вы не можете явным образом помещать значения в такую колонку, то мы не используем здесь свойство IDENTITY. В данном случае мы будем использовать более гибкий подход в примерах, где используется оператор INSERT.
Оператор INSERT
Оператор INSERT, введенный в
«лекции 13»
, используется для добавления новой строки или строк в таблицу или представление. Ниже показан основной синтаксис для оператора INSERT:
INSERT [INTO] имя_таблицы [(список_колонок)] VALUES выражение | производная_таблица
Ключевое слово INTO и параметр список_колонок не являются обязательными. Параметр список_колонок указывает, в какие колонки вы помещаете данные; эти значения имеют взаимно-однозначное соответствие (по порядку) со значениями, указанными в выражении (которое может быть просто списком значений). Рассмотрим некоторые примеры.
Вставка строк
В следующем примере показано, как вставить одну строку данных в таблицу items:
INSERT INTO items (item_category, item_id, price, item_desc) VALUES ('health food', 1, 4.00, 'tofu 6 oz.') GO
Поскольку мы задали значения для каждой колонки данной таблицы и перечислили эти значения в порядке соответствующих колонок таблицы, то можно было бы совсем не использовать параметр список_колонок. Но если бы значения были заданы не в порядке колонок, то вы получили бы неверные данные или появилось бы сообщение об ошибке. Например, если запустить следующую последовательность операторов, то вы получите сообщение об ошибке, указанное после этой последовательности:
INSERT INTO items VALUES (1, 'health food', 4.00, 'tofu 6 oz.') GO Server: Msg 245, Level 16, State 1, Line 1 Syntax error converting the varchar value 'health food' to a column of data type smallint.(Синтаксическая ошибка в результате преобразования varchar-значения 'health food' в колонке данных типа smallint)
Невыполнение вставки строки и это сообщение являются следствием неверного порядка значений Мы пытались поместить значение item_id в колонку item_category и значение item_category в колонку item_id. Указанные значения несовместимы с типами данных для этих колонок. Если бы они были совместимы, то SQL Server позволил бы вставить данную строку независимо от порядка следования значений.
Чтобы увидеть, как выглядит строка, которую мы вставили в таблицу, укажите запрос выбора всех строк таблицы с помощью следующего оператора SELECT:
SELECT * from items GO Вы получите следующий набор результатов: item_category item_id price item_desc ------------------------------------------------------- health food 1 4.0000 tofu 6 oz.intuit.ru/2010/edi»>При создании таблицы items было определено, что колонка price (цена) может содержать пустые значения, а для колонки item_desc (описание) было задано значение по умолчанию No desc. (Нет описания). Если в операторе INSERT не указано никакого значения для колонки price, то в эту колонку для новой строки будет помещено значение NULL. Если не указано никакого значения для колонки item_desc, то в эту колонку для новой строки будет помещено значение No desc.
Дальше >>
< Лекция 19 || Лекция 20: 12345678 || Лекция 21 >
вставка значений в определенные строки с помощью SQL
спросил
Изменено
11 лет, 6 месяцев назад
Просмотрено
118 тысяч раз
У меня есть таблица сведений о велосипедах, и я хочу добавить разные цены для разных типов велосипедов с помощью SQL-запросов, но то, что у меня есть, дает мне синтаксическую ошибку:
ВСТАВКА В велосипед (полный_день) ЦЕННОСТИ (10) ГДЕ bike_type = 'mens_hybrid';
Что не так с этим кодом?
Оператор INSERT
предназначен только для создания совершенно новых записей, а не для заполнения данными существующих. Вам нужен оператор
UPDATE
, который обновляет существующую запись:
UPDATE bike SET full_day = 10 WHERE bike_type = 'mens_hybrid';
(Примечание: ниже приведена более ранняя версия этого ответа, до того, как мне стало ясно, что пытался сделать оригинальный плакат. Я оставляю его здесь, потому что несколько человек, которые первоначально ответили на этот вопрос, похоже, не заметили проблема с написанием INSERT ... VALUES (...) WHERE
, что наводит меня на мысль, что это объяснение может быть полезно для некоторых людей, столкнувшихся с этим вопросом.)
Это утверждение не имеет смысла. INSERT
не может принимать предложение WHERE
, потому что WHERE
ссылается на существующие записи, а INSERT
создает новые.
(Чтобы предотвратить возможную путаницу: существует такая вещь, как INSERT INTO ... SELECT ...
, где записи для вставки определяются SELECT
, а не выражением VALUES
, и в этом случае запрос SELECT
, конечно, может иметь предложение WHERE
. Но ни в коем случае предложение
WHERE
не принадлежит оператору INSERT
напрямую.)
5
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.