mysql用正则REGEXP 实现@a为NA,NB,NC时匹配返回1,否则返回0
时间: 2024-04-14 15:30:32 浏览: 99
要使用正则表达式(REGEXP)来实现这样的匹配,你可以使用`CASE WHEN`语句结合正则表达式来实现。下面是一个示例:
```sql
SELECT
CASE WHEN '@a' REGEXP '^(NA|NB|NC)$' THEN 1 ELSE 0 END AS match_result;
```
在上面的示例中,我们使用了`CASE WHEN`语句来根据正则表达式的匹配结果返回相应的值。如果`@a`的值与正则表达式`^(NA|NB|NC)$`匹配成功,则返回1;否则返回0。请注意,`|`用于表示多个模式的选择,`^`和`$`分别表示字符串的开头和结尾。
你可以根据需要将`@a`替换为你要匹配的具体值。
相关问题
mysql正则匹配 返回0 1
在 MySQL 中,正则表达式匹配函数 `REGEXP` 和 `RLIKE` 都会返回一个布尔值,即匹配成功返回 1,否则返回 0。这两个函数用法相同,只是函数名不同。
例如,使用 `REGEXP` 判断字符串是否以字母开头:
```
SELECT 'abc' REGEXP '^[a-zA-Z]' AS is_match; -- 返回 1
SELECT '123' REGEXP '^[a-zA-Z]' AS is_match; -- 返回 0
```
使用 `RLIKE` 判断字符串是否包含数字:
```
SELECT 'abc123' RLIKE '[0-9]' AS is_match; -- 返回 1
SELECT 'abc' RLIKE '[0-9]' AS is_match; -- 返回 0
```
需要注意的是,正则表达式中的特殊字符需要转义,例如 `\` 需要写成 `\\`。另外,如果需要匹配整个字符串,需要在正则表达式的开头和结尾加上 `^` 和 `$`。
mysql中 REGEXP '^UK|ND|NA$'和REGEXP '^UK|ND|NA$';正则匹配的区别
在MySQL中,使用正则表达式时,正则表达式的结果取决于如何使用正则表达式。在你提供的两个示例中,虽然正则表达式的模式是相同的,但是使用的方式不同,导致匹配结果会有所区别。
1. `REGEXP '^UK|ND|NA$'`:
这种写法中,`^UK`表示匹配以"UK"开头的字符串,而`ND|NA$`表示匹配以"ND"或者"NA"结尾的字符串。这个正则表达式的意思是匹配以"UK"开头或者以"ND"或"NA"结尾的字符串。例如,"UK123"或者"123ND"都会被匹配到。
2. `REGEXP '^UK|ND|NA$'`:
这种写法中,`^UK|ND|NA$`表示匹配以"UK"开头或者以"ND"或者"NA"结尾的字符串。这个正则表达式的意思是匹配以"UK"开头,或者以"ND"开头,或者以"NA"结尾的字符串。例如,"UK123"、"ND456"、"789NA"等都会被匹配到。
所以,这两种写法在正则匹配的结果上有区别,具体取决于你想要实现的匹配逻辑。
阅读全文