2014-06-30 19 views
1

我需要編寫一條SQL語句來查找匹配的標記。問題是,在數據庫列中存儲單詞這樣的:帶有¶標記的SQL正則表達式

¶Klimawandel¶Ökosystem¶Moose¶CO2¶Stickstoffkreislauf¶

所以,如果我想找到reis和一列字Stickstoffkreislauf它將匹配的詞,因爲reis是部分的Stickstoffkreislauf

所以我想寫一個正則表達式3例匹配:

  • 開始與
  • 開始結束,與

但不幸的是我已經結束由於數據庫中的,不知道從何處開始使用正則表達式。有沒有人有一個想法如何開始呢?謝謝!

這是到目前爲止我的發言:

SELECT DISTINCT csia.cID, csia.ak_tags, p.cParentID, cv.cvName 
FROM CollectionSearchIndexAttributes csia 
JOIN Pages p ON csia.cID = p.cID 
JOIN CollectionVersions cv ON csia.cID = cv.cID 
WHERE cv.cvisApproved = '1' 
AND csia.ak_tags like '%reis%' 

我正在尋找的列csia.ak_tags

¶是unicode 00B6

+0

您正在使用哪種rdbms? – Andreas

+0

我沒有發現你的第三和以上兩種情況有任何不同。 –

+0

@Andreas我們使用MyISAM – Sebsemillia

回答

2

嘗試類似條款類似於此:

csia.ak_tags like '%\\\\u00B6reis\\\\u00B6%' 

未經測試,但感覺像它可能工作。如果你做到這一點,調整一個缺失的尾部或缺少的領先¶是沒有問題的。


更新:在Unicode escape sequence in command line MySQL http://sqlfiddle.com/#!2/a2269/33/0

select * from csia 
where ak_tags like concat('%',0xC2B6,'reis',0xC2B6,'%'); 

的意見是有益的


更新#2,原來我們只是在尋找新行:

select * from CollectionSearchIndexAttributes 
where ak_tags like '%\nreis\n%'; 

http://sqlfiddle.com/#!2/02f3a/3/0

+0

這不幸沒有返回任何內容.. – Sebsemillia

+0

你能確認unicode值字段是用分隔符嗎?我猜00B6,但我可能是錯的。此外,什麼排序是列/表下? – Andreas

+0

排序規則是'utf8_general_ci' – Sebsemillia

0

您是否嘗試過使用文字字符? SQL是相當驚人的,並使用like '%reis%¶'應該做的伎倆。看看我爲測試目的製作的SQL Fiddle

+0

不幸的是不起作用。 :( – Sebsemillia