我有一个包含4个varchar列的mysql表,在某些情况下,这些列可以包含一个数字。我必须将单个字符串连接成只包含至少包含一个字符的列,并忽略仅包含数字的列。MySQL - 如何连接包含至少一个字母字符的列
例如
AA + 88 + PO + A4 将导致 aapoa4
A3A + WW + 11 + EWD 将导致 a3awwewd
我有一个包含4个varchar列的mysql表,在某些情况下,这些列可以包含一个数字。我必须将单个字符串连接成只包含至少包含一个字符的列,并忽略仅包含数字的列。MySQL - 如何连接包含至少一个字母字符的列
例如
AA + 88 + PO + A4 将导致 aapoa4
A3A + WW + 11 + EWD 将导致 a3awwewd
所以基本上你可以看看你的问题,因为列的级联,如果它们不匹配^\d+$
正则表达式或空字符串否则。您可能会发现在REGEXP,CONCAT和CASE在MySQL的文档的多个文档,但下面有代码,这可能会导致你要实现什么:
SELECT
CONCAT(
CASE WHEN a REGEXP '^[[:digit:]]+$' THEN '' ELSE a END,
CASE WHEN b REGEXP '^[[:digit:]]+$' THEN '' ELSE b END,
CASE WHEN c REGEXP '^[[:digit:]]+$' THEN '' ELSE c END,
CASE WHEN d REGEXP '^[[:digit:]]+$' THEN '' ELSE d END) as result
FROM your_table;
当然,你可以使用NOT REGEXP
代替,但对我来说这种方式更清晰。
谢谢你,这是完美的! –
我承认我对你为什么需要这样做有点好奇 – Strawberry
一个想法是用''代替数字,然后忽略长度为零的字符串。或者使用正则表达式与CASE语句结合使用 – Strawberry
我发现了一个奇怪而丑陋的表格,其中包含四列用于描述对象(不明白为什么)。其中一些栏只包含对我来说毫无意义的数字。我必须连接成一个单独的字段,用逗号分隔,其他字母列。 –