如何查询特殊字符

时间:2014-10-30 13:11:25

标签: sql oracle oracle-sqldeveloper

我有一张充满供应商信息的大表。

我需要根据列VENDOR_NAME将此列表拆分为两个单独的列表。一个列表VENDOR_NAME是所有常规字符和数字,另一个列表VENDOR_NAME是特殊字符/外来字符。

我不确定从现有主表中查看此信息的SELECT语句是什么。然后我可以创建两个新表。

  1. VENDOR_NAME仅限数字和常规字符

  2. VENDOR_NAME仅限外国字符

  3. 示例:

    常规:BLUE RIBBON TAG& LABEL CORP

    外国人:俞章平

    常规:ULSTER-SOCIETY OF GASTROENTEROLOGY / 1

    外国人:马建忠

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
相关问题