你好Oracle编程程序员,你如何识别db中的双字节字符,我的意思是找到table1中第1列中包含双字节字符(如中文字符)的所有数据?
更新1:我甚至不知道列中的汉字是什么,我只需要查找用户输入任何非英文字符的所有first_name和last_name列,然后将值更改为NA。
答案 0 :(得分:4)
假设您真正意味着非英语(即任何字符不在US7ASCII字符集中)的最简单选项将类似于
UPDATE table_name
SET first_name = 'NA'
WHERE length( first_name ) != lengthb( first_name )
LENGTH
以字符形式返回字符串的长度,而LENGTHB
以字节为单位返回字符串的长度。 UTF-8使用单个字节对US7ASCII字符进行编码。如果有任何非US7SACII字符,则字节长度将大于字符长度。
答案 1 :(得分:0)
我从未尝试过这个,但我想你可以将每个字符转换为数字并查找超过256的值:
SQL> select ascii(unistr('\53f0')) from dual;
ASCII(UNISTR('\53F0'))
----------------------
21488