我不知道爲什麼我得空字符串作爲結果,當我especting東西完全別的...... 我用微調功能,從切串電話號碼:奇怪的微調功能行爲
select trim(leading '509960405' from '509960405509960404');
爲什麼預期結果不是509960404?
我不知道爲什麼我得空字符串作爲結果,當我especting東西完全別的...... 我用微調功能,從切串電話號碼:奇怪的微調功能行爲
select trim(leading '509960405' from '509960405509960404');
爲什麼預期結果不是509960404?
trim
去掉任何匹配字符列表的字符。字符串中的所有字符都在您的「領先」字符列表中。你所寫的也很容易被寫成
select trim(leading '04569' from '509960405509960404');
它從字符串的開頭刪除任何0,4,5,6或9個字符。由於您的字符串只包含0,4,5,6或9個字符,因此將其全部刪除。
@Paul澄清了trim()
的行爲。
的解決方案您的評論呈現潛在奸詐:
SELECT replace('509960405509960404','509960405','')
替換所有出現'509960405'
不只是第一個。例如:
SELECT replace('509960405509960404','50996040' ,'');
結果在54
。我懷疑這是而不是你想要什麼。
從字符串開頭刪除模式的常用方法是使用regular expressions。您可以在Postgres中使用regexp_replace()
。
SELECT regexp_replace('509960405509960404','^509960405' ,'');
^
..膠圖案到所述串的開始(「左錨定」)。
regexp_replace()
沒有簡單的replace()
快,但提供了豐富的選項。
還有其他方法,這取決於您的確切(祕密)要求。
thx,Erwin。替換正是我在這種情況下需要的。我的工作是在許多字符串(是,字符串;)中查找和剪切所有出現的電話號碼,因爲我即將清理的數據是一個大混亂。因此,如果有人在一個字段中多次輸入一個數字,我只能返回一個數字並將其複製到其他地方。整個和正確的數字(有適當的前綴)gonnna是同一個字符串中另一個數字的一部分的概率非常低,所以我認爲這是做這件事的好方法。 – Borys 2013-05-02 18:21:18
結果是什麼? – 2013-04-30 16:41:32
嘗試使用'ltrim'。 http://www.postgresql.org/docs/8.1/static/functions-string.html – 2013-04-30 16:43:17
@羅伯特 - 這沒什麼... – Borys 2013-04-30 16:43:54