【发布时间】:2020-10-24 05:02:07
【问题描述】:
需要帮助,我这几天遇到了麻烦。
问题是在存储过程上运行子查询的正则表达式,有时返回空有时正确。
REGEXP
(
select group_concat(_data_grupkasbank_auth.datahirarki separator '|') from _data_grupkasbank_auth where _data_grupkasbank_auth.uid='1'
)
如果我用字符串值替换子查询,它总是正确的:
REGEXP
(
'/Sangatta/K3PC/|/Yayasan Balikpapan/Masjid/'
)
我的 dbfiddle 运行完美,但不能在直接 myserver windows 10、mariadb 10.3.23 上运行
https://www.db-fiddle.com/f/pRWvdP3KUwv7rbTN7H7PZC/0
捕获: result test
(来自评论)
select group_concat(_data_grupkasbank_view.kode_grupkasbank separator ',' )
from _data_grupkasbank_view
where _data_grupkasbank_view.hirarki_grupkasbank REGEXP
( SELECT group_concat(_data_grupkasbank_auth.datahirarki separator '|')
from _data_grupkasbank_auth
where _data_grupkasbank_auth.uid='1'
)
INTO v_tempsql
【问题讨论】:
-
你不能简单地做一个
GROUP_CONCAT()而不是那个光标循环吗?? -
重点不是游标循环,而是正则表达式结果,我尝试删除游标并使用建议的 group_concat() 但结果仍然相同,有时空白有时正确,此处查询:选择 group_concat(_data_grupkasbank_view.kode_grupkasbank 分隔符', ') from _data_grupkasbank_view where _data_grupkasbank_view.hirarki_grupkasbank REGEXP ( select group_concat(_data_grupkasbank_auth.datahirarki separator '|') from _data_grupkasbank_auth where _data_grupkasbank_auth.uid='1' ) INTO v_tempsql;
-
试试
FIND_IN_SET()。 -
这里也一样。有什么消息吗,@Irwanto??
-
我使用 2 个临时变量,这项工作,DECLARE v_temp1 TEXT;声明 v_temp2 文本;从表中选择 group_concat(yourfield separator '|') INTO v_temp1;设置 v_temp2 = v_temp1; select field1, field2 from table where field1 regexp v_temp2;
标签: mysql sql regex stored-procedures mariadb