是否可以根据列的正则表达式模式查询结果?
假设我有2张桌子
table A
legs fur name
4 red cat
4 blue || spots dog
1 dolphin
1 black shark
1 yellow shark
1 white|| black whale
2 [0-9]{4}-[0-9]{2} exp1
2 [0-9]{4} expA-1
table B
cageNumber weight legs fur
192910 26 4 red
332192 12 1 black
119199 32 4 blue
111000 19 4 spots
192991 11 4 green
000001 14 2 0913-11
000002 11 2 1102
000003 16 2
我需要做的是使用一个select语句来描述笼号和名称,具体取决于毛发颜色
cageNumber name
192910 cat
332192 shark
111000 dog
119199 dog
192991 null
000001 exp1
000002 expA-1
000003 null
答案 0 :(得分:1)
将blue || spots
更改为blue|spots
,使其成为正确的正则表达式。
然后这应该有效:
ON B.fur REGEXP CONCAT('^(', A.fur, ')$')
我添加了^
和$
以便锚定到目的地。这样,blue
将匹配,但blueblood
将不匹配。
我添加了(
和)
,以便blue|sports
仅匹配blue
和sports
,而不是blueblood
和teamsports
。想想^blue|sports$
会发生什么 - 这意味着“从蓝色开始或以体育结束”。
答案 1 :(得分:0)
是的,你可以这样做,看看我的小例子。它只提供expertId = 1,contingentId = 59,描述以##开头,后跟一个数字。
select * from entry where expert_id=1 and contingent_id=59 and (description REGEXP '^##[0-9]');
答案 2 :(得分:0)
SELECT B.cageNumber, A.name FROM A JOIN B ON B.fur LIKE A.fur;
答案 3 :(得分:-1)
使用类似
的连接SELECT b.id, a.initiatorWallet FROM ledTest a
INNER JOIN ledTestB b ON a.transtype = b.transType
WHERE b.wallet RLIKE ( a.regex)