Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server:IN ('asd') không hoạt động khi cột là NTEXT

IN danh sách chỉ là ngắn gọn cho các điều kiện HOẶC. LIKE mệnh đề hoạt động với NTEXTTEXT lĩnh vực. Vì vậy, bạn có thể kết hợp hai ý tưởng đó để thực hiện việc này:

WHERE (
       someNtext LIKE N'asd'
OR     someNtext LIKE N'asd1'
      )

Tuy nhiên, như @marc_s đã đề xuất trong nhận xét về Câu hỏi, NVARCHAR(MAX) được ưu tiên vì tất cả các hàm chuỗi hoạt động với nó (và TEXT , NTEXTIMAGE kiểu dữ liệu đã không được chấp nhận kể từ SQL Server 2005). Bạn có thể thực hiện chuyển đổi nội tuyến chẳng hạn như:

WHERE CONVERT(NVARCHAR(MAX), someNtext) IN (N'asd', N'asd1')

nhưng có khả năng điều đó sẽ không hoạt động tốt như việc sử dụng LIKE mệnh đề với OR điều kiện.

Xin lưu ý: Khi làm việc với NTEXT / NVARCHAR / NCHAR / XML dữ liệu, tốt nhất là luôn luôn chuỗi ký tự tiền tố với chữ hoa "N". Không làm như vậy có thể dẫn đến mất dữ liệu cho bất kỳ ký tự nào không được hỗ trợ bởi trang mã được liên kết với đối chiếu mặc định của cơ sở dữ liệu.

Để biết thêm thông tin về cách làm việc với collations / encodings / Unicode / string nói chung trong SQL Server, vui lòng truy cập: https:// Collations. Thông tin /



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thực hiện XÓA nhanh nhiều dữ liệu khỏi một bảng lớn (máy chủ sql)

  2. Việc kết hợp giữa các lượt xem và bảng có thể ảnh hưởng đến hiệu suất không?

  3. Ba điều kiện trên một cột của bảng

  4. Ngày xây dựng từ năm và số tuần trong MSSQL

  5. Chỉ nhận Tháng và Năm từ SQL DATE