我有一个包含此类条目字段的表格:
"text text text"
"text text - Cap. 125"
"text - Cap. 1"
我需要剪切" - Cap. (Number)"
。
正如您在某些情况下所看到的那样,没有"Cap."
,而在其他情况下,该数字的数字超过1位。
我尝试使用REPLACE()
和TRIM()
,但REPLACE()
仅适用于" - cap."
,但不适用于数字;并TRIM()
剪掉特定数量的字符。
此外,我认为我需要WHERE field LIKE '% - CAP.%'
这样的内容来验证我是否正在更改正确的字段,因为并非所有字段都需要更改。
有什么建议吗?
答案 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