我正在嘗試撰寫一個函式,從字串中洗掉任何出現的 26 個字母。
輸入:'AA123A' -> 輸出:'123'
輸入:'AB-123-CD% -> 輸出:'-123-%'
我在谷歌上能找到的就是如何洗掉非數字字符,這些字符似乎都是圍繞定義要保留的數字而形成的。但我也想保留任何符號。
“簡單”的答案是每個字母 26 個嵌套 REPLACE,但我不敢相信沒有更好的方法來做到這一點。我可以定義一串 AZ 并遍歷每個字符,呼叫 REPLACE 26 次 - 使代碼更簡單但功能相同。
有沒有人有一個優雅的解決方案?
uj5u.com熱心網友回復:
如果我理解正確,您可以使用 TRANSLATE,例如:
SELECT REPLACE(TRANSLATE('AB-123- CDdcba%', 'ABCDabcd',' '), ' ', '');
SELECT REPLACE(TRANSLATE('AB-123- CDdcba%', 'ABCDabcd','AAAAAAAA'), 'A', '');
- 第一種情況也修剪空格,
- 第二,保留現有空間。
只需將其余字符添加到'ABCDabcd'引數并保持'AAAAAAAA'與第二個引數相同的長度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/372100.html
標籤:sql sql-server 代替 字母数字
