2014-10-30 70 views
0

我有一张充满供应商信息的大表。如何查询特殊字符

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

我不确定SELECT声明将从现有主表查看此信息。然后,我可以创建两个新表格。

  1. VENDOR_NAME只有数字和常规字符

  2. VENDOR_NAME只有外文字符

例子:

常规:蓝带TAG & LABEL CORP

外交部:俞章平

常规:阿尔斯特型社会的消化病/ 1

外交:马建忠

+0

如何定义_regular characters_和_foreign characters_?常规字符[0-9,a-Z]? – jpw 2014-10-30 13:13:51

+3

一张图片胜过千言万语。例子,例子,例子。如果您提供了源数据样本,DML可以更快地重现您的表结构并使用样本数据填充它,情况会更好。当然,还需要输出。 – 2014-10-30 13:15:04

+0

@ JPW-是0-9,a-z,几乎可以在我的键盘上输入任何东西。由外来字符表示中文字符。 – 2014-10-30 13:25:01

回答

1

您可以使用函数ASCIISTR():

ASCIISTR作为其参数字符串,或者表达式 解析为任何字符集中的字符串,并返回数据库字符集中字符串的ASCII 版本。非ASCII 字符将转换为\ xxxx格式,其中xxxx表示一个 UTF-16代码单元。

要获得所有字符串没有特殊字符:

SELECT * FROM table 
WHERE INSTR(ASCIISTR(vendor_name),'\') = 0 

你要照顾,当然,这与“\”字符串将通过这个过滤掉为好,因为反斜杠翻译到ASCIISTR的'\ 005C'。也许是这样的:

WHERE INSTR(REPLACE(ASCIISTR(vendor_name),'\005C','_'),'\') = 0 
+0

谢谢你的工作得很好,你有什么建议如何找到所有其他行现在放入一个单独的表?如果您愿意,请选择“其他选项”查询...或选择不是上述查询的所有内容? – 2014-10-30 17:07:36

+0

@DillonTagle如果这个答案对您有用,请投票和/或接受它。请参阅[当某人回答我的问题时该怎么办?](http://stackoverflow.com/help/someone-answers) – 2014-10-30 23:24:43