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

IsNumeric di SQL Server GABUNG

Anda tidak dapat mengandalkan urutan database yang akan mengevaluasi ekspresi pemfilteran. Ada pengoptimal kueri yang akan mengevaluasi SQL Anda dan membuat rencana untuk mengeksekusi kueri berdasarkan apa yang dianggapnya akan menghasilkan kinerja terbaik .

Dalam konteks ini, IsNumeric() tidak dapat digunakan dengan indeks, dan itu berarti menjalankan fungsi terhadap setiap baris dalam tabel. Oleh karena itu, hampir tidak akan pernah memberikan kinerja yang dirasakan terbaik. Bandingkan ini dengan SrcID > 15 ekspresi, yang dapat dicocokkan dengan indeks (jika ada), dan hanya ekspresi operator tunggal meskipun tidak ada. Ini juga dapat digunakan untuk menyaring jumlah baris potensial di mana IsNumeric() fungsi perlu dijalankan.

Anda mungkin bisa menyiasatinya dengan tampilan, subquery, CTE, pernyataan CASE, atau kolom yang dihitung. Berikut ini contoh CTE:

With NumericOnly As 
(
    SELECT <columns> FROM MyTable WHERE IsNumeric(SrcID) = 1
)
SELECT <columns> FROM NumericOnly WHERE SrcID > 15

Dan inilah opsi pernyataan KASUS:

SELECT <columns> FROM MyTable WHERE CASE WHEN IsNumeric(SrcIC) = 1 THEN Cast(SrcID As Int) ELSE 0 END > 15


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parameterise nama tabel di .NET/SQL?

  2. Perbarui statistik SQL Server menggunakan rencana pemeliharaan basis data

  3. Apa perbedaan antara VARCHAR dan NVARCHAR di SQL server - Tutorial SQL Server / T-SQL Bagian 32

  4. SQL:Menghapus catatan duplikat di SQL Server

  5. CROSS JOIN vs INNER JOIN dalam SQL