我要使用SQL
搜索并检索以已知子字符串“ XX”开头的子字符串。并以“”或“'”结尾。
例如,如果我以CONTOOOH 788 XX. 3C, MNOP
开头,则需要提取值3C
我尝试使用 substring(input,posisiton,len),但是由于len有所不同,所以不确定len的标准。
select substring(input, position("XX." in input)+4, **???**)
from tables
where input like '%XX.%';
我正在使用MySQL。
Input
CONTOH LALALA 12 XX. 1 ABCD LALA NANA MAMA KAKA
CONTOH NANANANA 34 XX. 02 EFGH IJKL MN
CONTOOOH MAMAMA XX. 1A IJKL YOYO
CONTOOOH NANA XIXI 788 XX. 423C, MNOP QRSTU ASDF POIU
EXAMPLE BLA BLA HOHOHO 910 XX. A4, QRST ASDGHH
EXAMPLE ZZZ AAA BBB 1112 XX. BB5, UVWXASDGHH
Output
1
02
1A
423C
A4
BB5
答案 0 :(得分:1)
一个选项将SUBSTRING_INDEX
与REPLACE
一起使用:
SELECT
Input,
REPLACE(SUBSTRING_INDEX(
SUBSTRING_INDEX(Input, 'XX. ', -1), ' ', 1), ',', '') AS Output
FROM yourTable;
以下是字符串操作的工作原理
CONTOOOH 788 XX. 3C, MNOP - initial input
3C, MNOP - after first call to SUBSTRING_INDEX
3C, - after second call to SUBSTRING_INDEX
3C - after call to REPLACE, to remove the comma
答案 1 :(得分:0)
根据MySQL子字符串的文档
长度可选。没有len参数的表单从字符串str返回一个从位置pos开始的子字符串。 https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring
因此,如果您当前的代码符合您的喜好(长度除外),只需将其忽略即可,它将返回整个子字符串。