gpt4 book ai didi

mysql - Regex 带来恰到好处的匹配 MySQL

转载 作者:行者123 更新时间:2023-11-29 05:50:20 24 4
gpt4 key购买 nike

我试图只获取 sql 查询的前两个词,我正在使用匹配项:^\w{2}- 但没有成功,因为我什么也没有,我需要获得这些值

BA、CE、DF、ES、GO,我不知道我该怎么做,下面是一些数据示例。

SC&Tipo=FM
SC&Tipo=Web
SC&Tipo=Comunitaria
RS&Tipo=Todas
RS&Tipo=AM
RS&Tipo=FM
RS&Tipo=Web
RS&Tipo=Comunitaria
BA-Salvador&Tipo=12horas
CE-Fortaleza&Tipo=12horas
CE-Interior&Tipo=12horas
DF-Brasilia&Tipo=12horas
ES-Interior&Tipo=12horas
ES-Vitoria&Tipo=12horas
GO-Goiania&Tipo=12horas
MG-ZonaDaMata/LestedeMinas&Tipo=12horas
MG-AltoParanaiba&Tipo=12horas
MG-BeloHorizonte&Tipo=12horas
MG-CentroOestedeMinas&Tipo=12horas

查询:SELECT * FROM tabel WHERE filter REGEXP '^\w{2}-'

编辑已解决:

解决查询应该是:SELECT SUBSTRING(column, 1, 2) AS column FROM table WHERE column REGEXP '^[[:alnum:]_]{2}-'

最佳答案

MySQL 不支持字符类 \w\d。您必须使用 [[:alnum:]] 而不是 \w。您可以找到所有支持的 character classes on the official MySQL documentation .

因此您可以使用以下解决方案使用 REGEXP :

SELECT * 
FROM table_name
WHERE filter REGEXP '^[[:alnum:]]{2}-'

您也可以使用以下命令通过正则表达式获取结果,使用 REGEXP_SUBSTR :

SELECT REGEXP_SUBSTR(filter, '^[[:alnum:]]{2}-') 
FROM table_name
WHERE filter REGEXP '^[[:alnum:]]{2}-';

或者另一种使用 HAVING 来过滤结果的解决方案:

SELECT REGEXP_SUBSTR(filter, '^[[:alnum:]]{2}-') AS colResult 
FROM table_name
HAVING colResult IS NOT NULL;

要获取 MySQL 8.0 之前的值,您可以将以下内容与 LEFT 一起使用:

SELECT LEFT(filter, 3) 
FROM table_name
WHERE filter REGEXP '^[[:alnum:]]{2}-';

demo: https://www.db-fiddle.com/f/7mJEmCkEiYhCYK3PcEZTNE/0

关于mysql - Regex 带来恰到好处的匹配 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55044686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com