線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4180
推到 Plurk!
推到 Facebook!

如何過濾出資料庫中欄位不含英文字母的記錄

答題得分者是:firesu
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2020-10-30 15:40:31 IP:36.229.xxx.xxx 未訂閱
請問各位:

我想找出資料庫某一欄位是6碼而且不含英文字母(即只含數字)的記錄, 查網有找到以下的做法

select * from CARGO
where CHAR_LENGTH(cargono) = 6 and cargono not like '%[^0-9]%'

前段沒有問題, 但後段似乎一直起不了作用,
我使用的資料庫 firebird 2.1x版
因為後段的語法, 在 firebird 上似乎把 [^0-9] 當成了一串字串, 而無法知道 [...] 括號內的是識別字功能
或者 firebird 有其他的寫法, 目前網路上是沒找著...
firesu
中階會員


發表:26
回覆:28
積分:55
註冊:2004-12-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2020-11-09 09:47:21 IP:60.248.xxx.xxx 未訂閱
試看看
and cargono similar to '[:DIGIT:]{6}'

===================引 用 P.D. 文 章===================
請問各位:

我想找出資料庫某一欄位是6碼而且不含英文字母(即只含數字)的記錄, 查網有找到以下的做法

select * from CARGO
where CHAR_LENGTH(cargono) = 6 and cargono not like '%[^0-9]%'

前段沒有問題, 但後段似乎一直起不了作用,
我使用的資料庫 firebird 2.1x版
因為後段的語法, 在 firebird 上似乎把 [^0-9] 當成了一串字串, 而無法知道 [...] 括號內的是識別字功能
或者 firebird 有其他的寫法, 目前網路上是沒找著...
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2020-12-13 23:37:13 IP:61.230.xxx.xxx 未訂閱
感謝!

但這個指令是從 2.5 開始支援, 2.1X以前沒有
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2020-12-31 13:21:00 IP:202.39.xxx.xxx 未訂閱
天下事無奇不有,幾乎不可能僅靠原廠提供的原始指令、函數就能達成目的;
所以原廠也不斷開發新版,增加新的 Class、Method、Function、Procedure。
既然目前的版本缺少所需的功能,那就用既有的功能自行組合出適用的 Function 或 Procedure,
那天升級到新版,這些自創的一樣能移植上去,不一定非得使用相同作用的新版功能去取代舊版的自創 Function 或 Procedure 啊!
例如:要判斷一個 Column 的數值為正數、負數、零、NULL,目前有簡易的現成 Function 可用嗎?
那自製一個 Return 1、-1、0、-2 的 Function 來用不行嗎?
SELECT * FROM mytable WHERE MyFuncion(MyTable.Column) >= 0
不就可取代
SELECT * FROM mytable WHERE NVL(MyTable.Column,-2) >= 0
所謂山不轉路轉吧!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2021-01-06 08:38:29 IP:114.24.xxx.xxx 未訂閱
感謝提點, 透過function寫一支來判斷確實沒有問題, 我目前也是用這個做法來抓取資料, 只是因為要交付給公司的工程師利用iboconsole 之類的工具來進行查找, delphi寫的程式除非做成 udf function 供 firebird 使用, 要不然是做不到, 所以才會想有沒有一組sq1語法可以一次撈, 這樣幫忙維護的工程師就會方便的多!
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2021-01-13 00:17:12 IP:202.39.xxx.xxx 未訂閱
我指的 MyFuncion(MyTable.Column) 確實是 firebird 的 udf,
Oracle、MS SQL 等, 一樣是會有很多條件式很難用原生 SQL 語法及 Function 達成的.
編輯記錄
herbert2 重新編輯於 2021-01-13 00:22:27, 註解 無‧
wsx1688
一般會員


發表:0
回覆:0
積分:0
註冊:2024-04-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2024-04-08 17:09:28 IP:38.54.xxx.xxx 未訂閱
瀨5280366和TG是nini9595 火辣正妹讓你享受AV裏的性愛高潮,你有膽來嘗試嗎~
系統時間:2024-11-21 17:02:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!