我正在尝试将在PHP中运行良好的正则表达式转换为MySQL。
MySQL不允许负面预测(?!)
所以我需要一个解决方案或解决方法
我的数据库列数据是这样的字符串:
标题:书名 - #¬描述:书籍描述 - #¬价格:$ 10.57
我可以在PHP中使用的正则表达式
(^ |¬¬#)标题:(((?!¬¬#))*书((¬¬#))*?!)
但在MySQL中我很挣扎。任何人都有任何建议或意见
答案 0 :(得分:0)
MySQL没有办法将REGEX应用于SELECT子句中的col的内容。
在这种情况下,您可以使用SUBSTRING功能提取您的内容。
SELECT
SUBSTRING_INDEX(
LEFT( content, LOCATE('?#?description', content)-1 ), 'title:', -1) AS title,
SUBSTRING_INDEX(
LEFT( content, LOCATE('?#?Price', content)-1 ), 'description:', -1) AS description,
SUBSTRING_INDEX(
RIGHT( content, LOCATE('?#?Price', content)-1 ), 'Price:', -1) AS price
FROM test_table
SQLFiddle
答案 1 :(得分:0)
一旦我考虑像nhahtdh建议的那样拆分它,解决方案很简单。
select
SUBSTRING_INDEX(SUBSTR(table.data, LOCATE('title:', table.data)+6), '¬#¬', 1) regexp '[[:<:]]Book[[:>:]]' AS hasResult
from
table;