2014-10-30 112 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