我有一张充满供应商信息的大表。
我需要根据列VENDOR_NAME
将此列表拆分为两个单独的列表。一个列表VENDOR_NAME
是所有常规字符和数字,另一个列表VENDOR_NAME
是特殊字符/外来字符。
我不确定从现有主表中查看此信息的SELECT
语句是什么。然后我可以创建两个新表。
VENDOR_NAME
仅限数字和常规字符
VENDOR_NAME
仅限外国字符
示例:
常规:BLUE RIBBON TAG& LABEL CORP
外国人:俞章平
常规:ULSTER-SOCIETY OF GASTROENTEROLOGY / 1
外国人:马建忠
答案 0 :(得分:2)
您可以使用ASCIISTR()函数:
ASCIISTR
将一个字符串或表达式作为参数 解析为任何字符集中的字符串并返回ASCII 数据库字符集中字符串的版本。非ASCII 字符转换为\ xxxx格式,其中xxxx表示a UTF-16代码单元。
获取没有特殊字符的所有字符串:
SELECT * FROM table
WHERE INSTR(ASCIISTR(vendor_name),'\') = 0
当然,你必须注意带有'\'的字符串也会被这个过滤掉,因为反斜杠被ASCIISTR翻译为'\ 005C'。也许是这样的:
WHERE INSTR(REPLACE(ASCIISTR(vendor_name),'\005C','_' ),'\') = 0