Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server 2008 R2 - Skalar UDF menghasilkan loop tak terbatas

SELECT PATINDEX('%[^a-]%', N'aaa-def' COLLATE Latin1_General_BIN),
       PATINDEX('%[^-a]%', N'aaa-def' COLLATE Latin1_General_BIN), 
       PATINDEX('%[^a-]%', 'aaa-def' COLLATE Latin1_General_BIN),
       PATINDEX('%[^-a]%', 'aaa-def' COLLATE Latin1_General_BIN)

Pengembalian

----------- ----------- ----------- -----------
1           5           5           5

Jadi sepertinya untuk varchar tipe data a trailing - diperlakukan sebagai bagian dari himpunan sedangkan untuk nvarchar itu diabaikan (diperlakukan sebagai rentang cacat sebagai a diabaikan juga?)

Entri BOL untuk LIKE tidak secara eksplisit berbicara tentang cara menggunakan - dalam [] untuk membuatnya diperlakukan sebagai bagian dari himpunan tetapi memiliki contoh

LIKE '[-acdf]'

untuk mencocokkan -, a, c, d, or f jadi saya berasumsi bahwa itu harus menjadi item pertama dalam satu set (yaitu [^a-zA-Z0-9.~_-] perlu diubah menjadi [^-a-zA-Z0-9.~_] ). Itu juga cocok dengan hasil pengujian saya di atas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL :ANTARA vs <=dan>=

  2. Gabungkan Kolom Secara Vertikal di SQL

  3. Dapatkan ukuran penyimpanan Tabel dan Indeks di server sql

  4. Bagaimana cara menambahkan Kolom Terhitung di Tabel SQL Server - Tutorial SQL Server / T-SQL Bagian 47

  5. Streaming langsung ke database