2012-05-23 60 views
4

我一直在四處尋找這樣的解決方案,但沒有陽性結果至今... 我由項數據,像使用通配符在SQL表項

  1. 8_24
  2. 9_13
  3. 8_2_
  4. 8_25

其中 '_' 是通配符其可以是從0到9。 我想找到一種方法來檢索這些數據,如: SELECT *從表WHERE數據LIKE'8424',查詢應返回8424和8_24。

預先感謝您!

PS。關鍵是,A 數據像'8_24'可以被理解爲'8024'或'8124'或'8224'等, 第6行也是如此。 因此,如果我的查詢是SELECT WHERE數據LIKE'8424',它應該返回第4行和第6行。如果我從表WHERE數據LIKE'8_2_'使用SELECT *,第7行將被包含,這不是我想要的。

最後, 我找到了解決方案。這非常簡單,只需使用: SELECT * FROM table WHERE'8424'LIKE data 謝謝大家的回答!

+0

如果它是一個字符串,你可以使用Like,你只是在尋找'%'。 [SQL像通過W3](http://www.w3schools.com/sql/sql_like.asp)或者你想更像單數字等更具體? – matthewnreid

+0

嗨。我想看看任何角色。但爲了簡單起見,在這種情況下只是數字。重點是,我想不僅在查詢中使用通配符,還要在數據條目中使用通配符。在表格中,如果還有其他數據(如「8_2_」),則應將其包含在返回結果中。 –

+0

您也可以按照與[0-9]一樣的答案中的描述來使用。 – matthewnreid

回答

0
SELECT * FROM table WHERE data LIKE '8%24' 

這也將拉之類的東西 '834434224' 雖然...

SELECT * FROM table WHERE data LIKE '8_24' 

它使用單個字符通配符(_)和會的工作。

LIKE Command

+0

我明白,但它不會像8_2_那樣返回數據,如果有的話。這就是問題所在...... –

+0

因此,您在數據庫中存儲通配符,並且希望在搜索8424等數字時檢索它們? Vineet的答案可能有效。 – brimat

+0

是的,這就是我所要求的。但它不起作用... –

0
select * from table where data like '8[4_]24' 

參見LIKE的文檔中的 「模式」 部分。您可以使用[]指定一個範圍或一組字符。

+0

最後,我找到了解決方案。這非常簡單,只需使用:SELECT * FROM table WHERE'8424'LIKE data。謝謝! –

0

select * from table where data = substr('8424',0,instr(data,''))|| substr('8424',instr(數據,''),長度(數據));

這將確保一個外卡參賽

否則儘量

SELECT * FROM表,其中替換(數據, '_', '%')像 '8424';

+0

謝謝。我試過了,但它不起作用。我認爲數據中的'_'和'%'被理解爲普通字符,而不是通配符。所以它不符合標準... –

+0

最後,我找到了解決方案。這非常簡單,只需使用:SELECT * FROM table WHERE'8424'LIKE data。謝謝! –

+0

@johnWhite:糟糕,直到我在我的答案中按下「提交」後纔看到您的評論。請考慮張貼您的查找作爲答案(並接受它)。 –