Apa daftar lengkap dari semua karakter khusus untuk SQL (Saya tertarik dengan SQL Server tetapi yang lain juga bagus) klausa LIKE?
Misalnya
SELECT Name FROM Person WHERE Name LIKE '%Jon%'
- %
- _
- [penentu] Misalnya [az]
- [^ penentu]
- Klausa ESCAPE Misalnya% 30! %% 'ESCAPE'! ' akan menilai 30% sebagai benar
- 'karakter harus dihilangkan dengan' Misalnya mereka menjadi mereka '
%
- String apa pun yang berisi nol atau lebih karakter._
- Karakter tunggal apa pun- Klausa ESCAPE Misalnya% 30! %% 'ESCAPE'! ' akan menilai 30% sebagai benar
%
- String apa pun yang berisi nol atau lebih karakter._
- Karakter tunggal apa pun- Klausa ESCAPE Misalnya% 30! %% 'ESCAPE'! ' akan menilai 30% sebagai benar
Sybase
- %
- _
- [penentu] Misalnya [az]
- [^ penentu]
%
- String apa pun yang berisi nol atau lebih karakter._
- Karakter tunggal apa pun
%
- String apa pun yang berisi nol atau lebih karakter._
- Karakter tunggal apa pun- Klausa ESCAPE Misalnya% 30! %% 'ESCAPE'! ' akan menilai 30% sebagai benar
- %
- _
- Karakter ESCAPE hanya jika ditentukan .
PostgreSQL juga memiliki SIMILAR TO
operator yang menambahkan berikut ini:
[specifier]
[^specifier]
|
- salah satu dari dua alternatif*
- pengulangan item sebelumnya sebanyak nol atau lebih.+
- pengulangan item sebelumnya satu kali atau lebih.()
- kelompokkan item bersama
Idenya adalah menjadikan ini Wiki komunitas yang bisa menjadi "toko serba ada" untuk ini.
sql
special-characters
sql-like
a_horse_with_no_name
sumber
sumber
LIKE
; misalnyaWHERE familyname = 'O''Toole'
. Ketiga,SIMILAR TO
operator memperkenalkan semacam ekspresi reguler hibrida, yang memiliki fiturnya sendiri (dan banyak lagi karakter khusus), jadi mungkin sebaiknya tidak disertakan di sini. Saya kira itu membuat 3 komentar, tapi tidak ada yang mengharapkan Inkuisisi Spanyol.Jawaban:
Untuk SQL Server, dari http://msdn.microsoft.com/en-us/library/ms179859.aspx :
% Semua string dari nol atau lebih karakter.
WHERE title LIKE '%computer%'
menemukan semua judul buku dengan kata 'komputer' di mana saja di judul buku._ Karakter tunggal apa pun.
WHERE au_fname LIKE '_ean'
menemukan semua nama depan empat huruf yang diakhiri dengan ean (Dean, Sean, dan seterusnya).[] Setiap karakter tunggal dalam rentang yang ditentukan ([af]) atau set ([abcdef]).
WHERE au_lname LIKE '[C-P]arsen'
menemukan nama belakang penulis yang diakhiri dengan arsen dan dimulai dengan karakter tunggal antara C dan P, misalnya Carsen, Larsen, Karsen, dan seterusnya. Dalam pencarian kisaran, karakter yang termasuk dalam kisaran dapat bervariasi tergantung pada aturan penyortiran dari penyusunan.[^] Setiap karakter tunggal tidak dalam rentang yang ditentukan ([^ af]) atau set ([^ abcdef]).
WHERE au_lname LIKE 'de[^l]%'
semua nama belakang penulis dimulai dengan de dan tidak ada huruf berikutnya l.sumber
ANSI SQL92 :
Sangat mengecewakan bahwa banyak database yang tidak mematuhi aturan standar dan menambahkan karakter tambahan, atau salah mengaktifkan ESCAPE dengan nilai default '\' jika tidak ada. Sepertinya kita belum memiliki cukup masalah dengan '\'!
Tidak mungkin untuk menulis kode yang tidak tergantung DBMS di sini, karena Anda tidak tahu karakter apa yang akan Anda hindari, dan standar mengatakan Anda tidak dapat melarikan diri dari hal-hal yang tidak perlu di-escape. (Lihat bagian 8.5 / Aturan Umum / 3.a.ii.)
Terima kasih SQL! gnnn
sumber
Anda harus menambahkan bahwa Anda harus menambahkan 'untuk menghindari exising' di SQL Server:
smith's -> smith ''
sumber
Sybase:
sumber
Jawaban potensial untuk SQL Server
Menarik Saya baru saja menjalankan tes menggunakan LinqPad dengan SQL Server yang seharusnya hanya menjalankan Linq ke SQL di bawahnya dan itu menghasilkan pernyataan SQL berikut.
Rekaman. Dimana (r => r.Name.Contains ("lkjwer --_ ~ []"))
Jadi saya belum mengujinya tetapi sepertinya
ESCAPE '~'
kata kunci berpotensi memungkinkan pelolosan string secara otomatis untuk digunakan dalam ekspresi serupa.sumber
ESCAPE
karena memungkinkan penggunaan dua karakter per karakter yang diloloskan (misalnya,%
menjadi~%
) alih-alih tiga (misalnya, tanpaESCAPE
,%
menjadi[%]
).