Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:IN ('asd') nie działa, gdy kolumna jest NTEXT

IN lista jest po prostu skrótem dla warunków OR. LIKE klauzula działa z NTEXT i TEXT pola. Możesz więc połączyć te dwa pomysły, aby to zrobić:

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

Jednak, jak zasugerował @marc_s w komentarzu do pytania, NVARCHAR(MAX) jest preferowany, ponieważ działają z nim wszystkie funkcje łańcuchowe (oraz TEXT , NTEXT i IMAGE typy danych są przestarzałe od SQL Server 2005). możesz wykonaj konwersję w wierszu, taką jak:

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

ale prawdopodobnie nie będzie to działać tak dobrze, jak przy użyciu LIKE klauzula z OR warunki.

Uwaga: Podczas pracy z NTEXT / NVARCHAR / NCHAR / XML danych, najlepiej zawsze Prefiks literałów ciągu z wielką literą „N”. Niewykonanie tego może spowodować utratę danych dla znaków nieobsługiwanych przez stronę kodową skojarzoną z domyślnym sortowaniem bazy danych.

Aby uzyskać więcej informacji na temat pracy z sortowaniem / kodowaniem / Unicode / ciągami znaków w programie SQL Server, odwiedź stronę:https://Collations. Informacje/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pętla na stole (bez użycia kursora), aby połączyć dane

  2. wyszukiwanie pełnotekstowe danych z podkreśleniem

  3. Entity Framework Code-First jest bardzo powolny

  4. Jak mogę wycofać kwerendę UPDATE w programie SQL Server 2005?

  5. wystąpił błąd podczas nawiązywania połączenia z SQL Server