2010-06-23 22 views

Trả lời

53

như đã nói trước tốt nhất là để thiết lập kiểu dữ liệu của cột để nvarchar (max), nhưng nếu đó là không thể bạn có thể làm bằng cách sử dụng dàn diễn viên sau hoặc chuyển đổi:

-- 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 

hy vọng rằng sẽ giúp

3

hmm, hãy thử làm CAST(' ' AS TEXT) + [myText]

Mặc dù, tôi không hoàn toàn chắc chắn cách này sẽ pan ra.

Tôi cũng khuyên bạn không nên sử dụng kiểu dữ liệu Văn bản, sử dụng varchar thay thế.

Nếu điều đó không làm việc, hãy thử ' ' + CAST ([myText] AS VARCHAR(255))

+0

Cảm ơn, nhưng người đầu tiên mang đến cho lỗi Operand kiểu dữ liệu văn bản này là không hợp lệ cho tiện ích điều hành. myText là loại văn bản, không phải varchar và tôi không biết văn bản có thể dài bao lâu, nó có thể rất dài – Aximili

+0

hmm, tôi cho rằng bạn 'COULD' sử dụng VARCHAR (MAX) thay vì VARCHAR (255), nhưng có vẻ như có lẽ là một cách tốt hơn. – Meiscooldude

8

Các + (String Concatenation) không hoạt động trên SQL Server cho các loại hình ảnh, ntext, hoặc dữ liệu văn bản.

Thực tế, hình ảnh, văn bản và văn bản là all deprecated.

các loại dữ liệu tiếp theo, văn bản và hình ảnh sẽ bị xóa được xóa trong phiên bản tương lai của Máy chủ MicrosoftSQL. Tránh sử dụng các loại dữ liệu này trong công việc phát triển mới, và có kế hoạch sửa đổi các ứng dụng hiện đang sử dụng chúng. Sử dụng nvarchar (tối đa), varchar (tối đa) và varbinary (max) để thay thế.

Điều đó nói rằng nếu bạn đang sử dụng phiên bản SQL Server cũ hơn bạn muốn sử dụng UPDATETEXT để thực hiện nối của bạn. Colin Stasiuk đưa ra ví dụ điển hình trong bài đăng trên blog của mình String Concatenation on a text column (SQL 2000 vs SQL 2005+).

14

Ngừng sử dụng loại dữ liệu TEXT trong SQL Server!

Phiên bản này không được dùng nữa kể từ phiên bản 2005. Sử dụng VARCHAR(MAX) thay vào đó, nếu bạn cần nhiều hơn 8000 ký tự.

Loại dữ liệu TEXT không hỗ trợ các chức năng chuỗi bình thường, trong khi VARCHAR(MAX) làm - tuyên bố của bạn sẽ hoạt động tốt, nếu bạn chỉ sử dụng các loại VARCHAR.

0

Để tham gia hai chuỗi trong hàm truy vấn SQL CONCAT (Express1, Express2, ...)

Giống như ....

SELECT CODE, CONCAT(Rtrim(FName), " " , TRrim(LName)) as Title FROM MyTable 
1
UPDATE test SET a = CONCAT(a, "more text") 
Các vấn đề liên quan