Mysql 案例陈述全部返回“;否则";价值
我的查询中有case语句,我在其中查看并验证输入的值。我不确定我是否正确地应用了case语句,因为所有输出都从查询的“ELSE”部分返回值。我知道我的数据确实包含与其他两个条件匹配的正确值,但即使这些条件也返回“ELSE”值 以下是我的案例陈述:Mysql 案例陈述全部返回“;否则";价值,mysql,case,Mysql,Case,我的查询中有case语句,我在其中查看并验证输入的值。我不确定我是否正确地应用了case语句,因为所有输出都从查询的“ELSE”部分返回值。我知道我的数据确实包含与其他两个条件匹配的正确值,但即使这些条件也返回“ELSE”值 以下是我的案例陈述: , MAX(CASE WHEN line_field_id = 2199 AND line_value REGEXP '^HSA[0][0-5][0-9][0-9][0-9][0-9]$' AND line_value LIKE B
, MAX(CASE
WHEN line_field_id = 2199 AND line_value REGEXP '^HSA[0][0-5][0-9][0-9][0-9][0-9]$' AND line_value LIKE BINARY 'HSA%' THEN line_value
WHEN line_field_id = 2199 AND line_value REGEXP '^A[0-9][0-9][0-9][0-9][0-9][0-9]$' AND line_value LIKE BINARY 'A%' THEN line_value
ELSE 'INVALID'
END) 'scanned_value'
两列的一些示例值:
row_number | line_value | line_field_id |
----------+------------+---------------+
1 |HSA014173 |2199 |
2 |HSA013765 |2199 |
3 |A062345 |2199 |
4 |ZHR098765 |2199 |
5 |A062499 |2199 |
6 |HSA045000 |2416 |
7 |HSA049800 |2416 |
8 |A069999 |2416 |
期望结果集:
row_number | Result | line_field_id |
----------+------------+---------------+
1 |HSA014173 |2199 |
2 |HSA013765 |2199 |
3 |A062345 |2199 |
4 |INVALID |2199 |
5 |A062499 |2199 |
是否要编写SELECT语句,其中提供表中的所有有效行?列的类型是什么?使用类型为
VARCHAR
的问题在我这方面是不可复制的。我想从表格中选择行\字段\ id=2199且符合给定标准的所有值(大写HSA/a,后跟数字)。如果“扫描的_值”与CASE语句标准不匹配,则必须将其设置为“无效”。行_值为VARCHAR(165),行_字段_id为INT(10)。当我取出“ELSE”语句时,返回的值是正确的,显示为“无效”的值是空的