2012-10-23 29 views
3

被要求在大量文本中查找美元值。可以在美元符號上執行搜索嗎?如果是這樣,任何示例/指導將不勝感激。當前查詢...

select * from concept where concept_description like '%$%'; 
+0

你試過這個查詢嗎? – Marc

+0

是的,沒有回報,但當我眼睛bal the的文字片段時,我看到了幾美元的價值。 – Atwp67

+0

LIKE(或SQL字符串文字)中沒有'$'的特殊含義。除非發送查詢的客戶使用'$'做一些有趣的事 - eeps! - 我會想象數據和看法是不對齊的。 – 2012-10-23 17:25:38

回答

1

給出將選擇其中concept_description包含$行的查詢,但我認爲要真正地拉出美元數額?如果只有永遠只是一個在外地金額則可以使用

SELECT 
SUBSTRING(
    concept_description, 
    LOCATE('$', concept_description), 
    LOCATE(' ', concept_description, LOCATE('$', concept_description)) - LOCATE('$', concept_description) 
) 
FROM table 
WHERE LOCATE('$', concept_description) > 0 

這個假設金額總是跟着一個空間,可能需要在索引一些捏造拉出。最好用簡單的查詢拉出整個領域,然後使用正則表達式來獲取任何美元值。

+0

感謝您的代碼,但沒有初始回報。我會稍微玩一下代碼,並讓你知道結果。 – Atwp67

+0

除了將['LOCATE'](http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_locate)的參數混合起來(針頭*首先*),爲什麼不只是使用'LIKE'? – 2012-10-23 18:50:18

+0

@pst我想我可能已經想出了這個使用普通的extent,但需要一個魔鬼的倡導者'select * from concept where'concept_description rlike'\\ $';' – Atwp67

3

您可能需要使用LOCATE,看是否山坳值包含$例如

SELECT * FROM concept WHERE LOCATE('$', concept_description) > 0;