2014-10-08 62 views
0

我想找到那個樣子SQLite的查詢剝離一些文字

Transfer to CHK 9071 Confirmation# 1904952784

(不管多少)的所有記錄,並去掉了「確認#」的一部分;所以上面將成爲

Transfer to CHK 9071

我試過,但有語法錯誤:

update ZUSERPAYEE set ZNAME = left (ZNAME,length(ZNAME) - 24) where ZNAME like "%Confirmation# __________";

+0

它適用於我。 (MySQL的5.6.16)結果:「轉移至CHK 9071」空白結尾。 – David 2014-10-08 01:18:31

回答

1

單引號這應該是因爲這一點更可靠不要求確認號碼是固定長度。還有LIKE的單引號。

update ZUSERPAYEE 
set ZNAME = INSTR(ZNAME, 'Confirmation#') - 1) 
where ZNAME like '%Confirmation# %' 
+0

我試過了,但得到了'錯誤:近「(」:語法error' ......也許是因爲我使用'sqlite3'從OSX命令行...也許它不支持完整的功能集MySQL的 – 2014-10-08 01:32:51

+0

的我更新了聲明。我離開的第二個參數CHARINDEX。 – 2014-10-08 01:36:20

+0

更改CHARINDEX來定位。格式相同,只是CHARINDEX是SQL Server。 – 2014-10-08 01:50:51

1

我建議您檢出SUBSTRING_INDEX函數。 (我知道,在MySQL的使用,約SqlLite3不知道)

例如

SUBSTRING_INDEX('Transfer to CHK 9071 Confirmation# 1904952784',' Confirmation#',1) 

(這個例子假設總有前確認#空間,你想要的空間移除。)

如果你只是想剪掉開始在「確認#」,省略了空間字符:

SUBSTRING_INDEX('Transfer to CHK 9071 Confirmation# 1904952784','Confirmation#',1) 

對於給出的例子,這將留下尾隨空格。尾部空格可以通過將該表達式包裝在一個

TRIM(TRAILING ' ' FROM expr) 
+0

不錯,但'錯誤:沒有這樣的函數:SUBSTRING_INDEX' :-( – 2014-10-08 02:31:03