PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Batasan Postgresql untuk memeriksa karakter non-ascii

Anda dapat menentukan ASCII sebagai ordinal 1 to 127 untuk tujuan ini, maka kueri berikut akan mengidentifikasi string dengan nilai "non-ascii":

SELECT exists(SELECT 1 from regexp_split_to_table('abcdéfg','') x where ascii(x) not between 1 and 127);

tetapi sepertinya tidak terlalu efisien, dan penggunaan subkueri akan memaksa Anda untuk melakukannya di pemicu daripada batasan PERIKSA.

Sebaliknya saya akan menggunakan ekspresi reguler. Jika Anda ingin semua karakter yang dapat dicetak maka Anda dapat menggunakan rentang dalam batasan centang, seperti:

CHECK (my_column ~ '^[ -~]*$')

ini akan mencocokkan semuanya mulai dari spasi hingga tilde , yang merupakan rentang ASCII yang dapat dicetak.

Jika Anda ingin semua ASCII, dapat dicetak dan tidak dapat dicetak, Anda dapat menggunakan byte escapes :

CHECK (my_column ~ '^[\x00-\x7F]*$')

Pendekatan yang paling benar adalah dengan convert_to(my_string, 'ascii') dan biarkan pengecualian dimunculkan jika gagal ... tetapi PostgreSQL tidak menawarkan ascii (yaitu 7-bit) encoding, sehingga pendekatan tersebut tidak mungkin dilakukan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri parameter (pengaturan postgresql.conf) seperti max_connections

  2. Cara Menyebarkan PostgreSQL untuk Ketersediaan Tinggi

  3. php cara menggunakan kotak pilih untuk mencari data dalam tampilan daftar (tabel)

  4. Tidak ada liblwgeom saat menggunakan postgresql84 dan postgis di Snow Leopard dengan MacPorts

  5. Cara menghasilkan skema dari CSV untuk Salinan PostgreSQL