在SQL中删除字符串的一部分

时间:2012-12-01 11:25:23

标签: mysql sql trim cut

我有一个包含此类条目字段的表格:

"text text text"
"text text - Cap. 125"
"text - Cap. 1"

我需要剪切" - Cap. (Number)"

正如您在某些情况下所看到的那样,没有"Cap.",而在其他情况下,该数字的数字超过1位。

我尝试使用REPLACE()TRIM(),但REPLACE()仅适用于" - cap.",但不适用于数字;并TRIM()剪掉特定数量的字符。

此外,我认为我需要WHERE field LIKE '% - CAP.%'这样的内容来验证我是否正在更改正确的字段,因为并非所有字段都需要更改。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

SELECT CASE
         WHEN myField RLIKE ' - Cap\\. [[:digit:]]{1,3}$' THEN
           LEFT(myField, 1
             + CHAR_LENGTH(myField)
             - CHAR_LENGTH(' - Cap. ')
             - LOCATE(REVERSE(' - Cap. '), REVERSE(myField))
           )
         ELSE myField
       END
FROM   myTable

sqlfiddle上查看。

答案 1 :(得分:0)

SELECT SUBSTRING_INDEX(column_name, 'Cap', 1) FROM table ; // for left
SELECT SUBSTRING_INDEX(column_name, 'Cap', -1) FROM table; // for right