Karena Anda perlu mengkueri beberapa data dalam database, konten bidang hanya dapat berisi karakter, huruf, dan angka Cina, dan tidak dapat berisi simbol khusus (kecuali untuk data khusus) Mari kita lihat efeknya terlebih dahulu, sebagai berikut:
Sumber daya:
Bagaimana database sql mengkueri bidang hanya dengan angka dan huruf atau karakter Cina
- Hanya berisi angka dan huruf
Pilih nama kolom dari nama tabel di mana REGEXP_LIKE(nama kolom,'^([\u4e00-\u9fa5]+)$')
--Hanya berisi karakter Cina
pilih nama kolom dari nama tabel di mana length(nama kolom)=length(ASCIISTR(nama kolom))-length(replace(ASCIISTR(nama kolom),'\',''))
Catatan: Fungsi asciistr() akan mengubah string menjadi nilai ASCII, dan jika karakter tersebut ada dalam tabel kode ASCII, itu akan dikonversi menjadi karakter ASCII yang sesuai; Jika tidak ada, seperti karakter Cina dan lebar penuh, itu akan dikonversi ke format \xxxx.
Fungsi length() dihitung bahwa panjang Cina adalah 1, dan karakter Cina yang sesuai dengan lengthb() adalah 2 byte. Pernyataan di atas adalah untuk membandingkan jumlah karakter Cina dengan jumlah \ setelah dikonversi ke nilai ASCII, jika sama, itu berarti semuanya adalah karakter Cina. (Jika Anda ingin mengecualikan pengaruh simbol lebar penuh, Anda harus terlebih dahulu mengubah bidang menjadi setengah lebar, dan fungsinya adalah to_single_byte()).
sqlserver2008r2 mencari posisi pertama di mana angka alfanumerik non-Cina muncul
Lingkungan: Database pengujian sqlserver2008r2 memiliki metode penyortiran Chinese_PRC_CI_AS, dan saya belum mencobanya di lingkungan lain Pernyataan
Nilai pengembalian: 4
Solusi saya
(Akhir)
|