SQL Server - добавление строки в текстовый столбец (эквивалент concat)
Как добавить строку в столбец SQL Server?
UPDATE [myTable] SET [myText]=' '+[myText]
Это не работает:
Типы данных varchar и текст несовместимы в операторе добавления.
Вы бы использовали concat для MySQL, но как это сделать на SQL Server?
Ответы
Ответ 1
как сказано выше, лучше всего установить тип данных столбца на nvarchar (max), но если это невозможно, вы можете сделать следующее с помощью cast или convert:
-- create a test table
create table test (
a text
)
-- insert test value
insert into test (a) values ('this is a text')
-- the following does not work !!!
update test set a = a + ' and a new text added'
-- but this way it works:
update test set a = cast ( a as nvarchar(max)) + cast (' and a new text added' as nvarchar(max) )
-- test result
select * from test
-- column a contains:
this is a text and a new text added
надеюсь, что поможет
Ответ 2
Остановить использование типа данных TEXT
в SQL Server!
Он был устаревшим с версии 2005 года. Используйте VARCHAR(MAX)
вместо этого, если вам нужно больше 8000 символов.
Тип данных TEXT
не поддерживает обычные строковые функции, тогда как VARCHAR(MAX)
делает - ваш оператор будет работать нормально, если вы будете использовать только типы VARCHAR.
Ответ 3
+ (String Concatenation) не работает в SQL Server для типов изображений, ntext или текстовых данных.
Фактически, изображение, текст и текст все устарели.
ntext, text и типы данных изображения будут быть удалены в будущей версии MicrosoftSQL Server. Избегайте использования этих типы данных в новых разработках, и планируют изменить приложения, которые в настоящее время используют их. Используйте nvarchar (max), varchar (max) и varbinary (max) вместо этого.
Тем не менее, если вы используете более старую версию SQL Server, чем хотите использовать UPDATETEXT для выполнения своей конкатенации. Какой Колин Стасюк дает хороший пример в своем блоге Конкатенация строк в текстовом столбце (SQL 2000 и SQL 2005+).
Ответ 4
hmm, попробуйте сделать CAST(' ' AS TEXT) + [myText]
Хотя, я не совсем уверен, как это закончится.
Я также предлагаю не использовать текстовый тип данных, вместо этого используйте varchar.
Если это не сработает, попробуйте ' ' + CAST ([myText] AS VARCHAR(255))
Ответ 5
UPDATE test SET a = CONCAT(a, "more text")
Ответ 6
Присоединить две строки в функции SQL Query use CONCAT (Express1, Express2,...)
Как....
SELECT CODE, CONCAT(Rtrim(FName), " " , TRrim(LName)) as Title FROM MyTable