Oracle DB Programmer: Как определить двухбайтовые символы в таблице? - PullRequest
0 голосов
/ 17 марта 2012

Привет, программисты Oracle sql, как вы определяете двухбайтовый символ в БД, который я имею в виду, чтобы найти все данные в столбце 1 таблицы 1, которые содержат двухбайтовые символы, такие как китайский символ (ы)?ОБНОВЛЕНИЕ 1: Я даже не знаю, какие китайские иероглифы будут в столбце, мне просто нужно найти все столбцы first_name и last_name, в которые пользователи вводили любые неанглийские символы, а затем изменить значение на NA.

Ответы [ 2 ]

4 голосов
/ 17 марта 2012

Самый простой вариант, если вы действительно имеете в виду не английский (т. Е. любой символ, не входящий в набор символов US7ASCII), будет выглядеть примерно так:

UPDATE table_name
   SET first_name = 'NA'
 WHERE length( first_name ) != lengthb( first_name )

LENGTH возвращает длину строки в символах, а LENGTHB возвращает длину строки в байтах. UTF-8 кодирует символы US7ASCII одним байтом. Если есть какие-либо символы, отличные от US7SACII, длина в байтах будет больше длины в символах.

0 голосов
/ 17 марта 2012

Я никогда не пробовал этого, но я думаю, вы могли бы преобразовать каждый символ в число и искать значения более 256:

SQL> select ascii(unistr('\53f0')) from dual;

ASCII(UNISTR('\53F0'))
----------------------
                 21488
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...