gpt4 book ai didi

mysql - 仅选择值长度和格式 - MySQL

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:51 24 4
gpt4 key购买 nike

有没有办法从mysql的特定列中只选择满足以下条件的字段:

最大长度 = 9前 3 个字符必须是 HSA最后 6 个字符只能是 INT这 6 位数字必须以 0 开头......这可能会在以后更改为以 1/2 等开头。

下表显示了基本架构和可能的字段值。

row | visit_date | field_value 
----+------------+---------------
1 |2016-12-07 |HSA023456
2 |2016-12-08 |HSA059870
3 |2016-12-06 |225981450
4 |2016-12-05 |HSAB02354
5 |2016-12-13 |HSA0234567
6 |2016-12-14 |HSA
7 |2016-12-14 |HSA0987
8 |2016-12-16 |1234HSA00

第 1 - 3 行是有效行,必须返回。

第 4 - 8 行是无效行,必须被忽略。

我已经尝试了下面的方法,虽然这没有提供正确的结果,因为它只提供了部分解决方案:

,       CASE
WHEN CHAR_LENGTH(NFB.field_value) > 8 AND NFB.field_value LIKE 'HSA%' THEN UPPER(NFB.field_value)
WHEN CHAR_LENGTH(NFB.field_value) < 9 AND NFB.field_value LIKE 'HSA%' THEN CONCAT(UPPER(NFB.field_value),'VALIDATE')

否则“” 结束字段值

谢谢

最佳答案

此查询非常适合使用 MySQL 的正则表达式运算符 REGEXP。请注意,通过匹配以下正则表达式可以满足您的所有要求:

^HSA0[0-9][0-9][0-9][0-9][0-9]$

这完全匹配 9 个字符,它们以 HSA0 开头,后跟任何其他五位数字。

SELECT *
FROM yourTable
WHERE field_value REGEXP '^HSA0[0-9][0-9][0-9][0-9][0-9]$'

更新:

如果你只想限制为大写,那么你可以添加一个 LIKE 条件检查:

SELECT *
FROM yourTable
WHERE field_value REGEXP '^HSA0[0-9][0-9][0-9][0-9][0-9]$' AND
field_value LIKE BINARY 'HSA%'

REGEXP 不区分大小写,因此需要解决方法。

关于mysql - 仅选择值长度和格式 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41889158/

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