簡體   English   中英

在和Mysql中使用分隔符進行正則表達式搜索

[英]Regex Search with delimiters in and Mysql

我正在嘗試將在PHP中正常工作的正則表達式轉換為MySQL。 MySQL不允許負前瞻(?!)因此我需要一種解決方案或解決方法

我的數據庫列數據是這樣的字符串:

書名:書名¬#描述:書名¬#價格:$ 10.57

我可以在PHP中使用的正則表達式是

(^ |¬#¬)title:(((?!¬#¬)。)* Book((?!¬#¬)。)*)

但是在MySQL中,我很掙扎。 任何人有任何意見或建議

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

http://sqlfiddle.com/#!2/04e83/1

一旦我想到像nhahtdh建議的那樣進行拆分,解決方案就很簡單。

select 
  SUBSTRING_INDEX(SUBSTR(table.data, LOCATE('title:', table.data)+6), '¬#¬', 1) regexp '[[:<:]]Book[[:>:]]' AS hasResult
from 
  table;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM