如何搜索以已知子字符串开头的子字符串

时间:2018-10-25 02:42:21

标签: mysql sql

我要使用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。

enter image description here

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

2 个答案:

答案 0 :(得分:1)

一个选项将SUBSTRING_INDEXREPLACE一起使用:

SELECT
    Input,
    REPLACE(SUBSTRING_INDEX(
        SUBSTRING_INDEX(Input, 'XX. ', -1), ' ', 1), ',', '') AS Output
FROM yourTable;

enter image description here

Demo

以下是字符串操作的工作原理

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

因此,如果您当前的代码符合您的喜好(长度除外),只需将其忽略即可,它将返回整个子字符串。