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.