2016-06-10 112 views
1

我試圖使用SQL IN函數從表中檢索信息。 我正在使用以下select,我的邏輯是搜索包含縮寫「SMS」的字段。但是,查詢只檢索「其他服務」的值用於近似值的SQL IN查詢

如何僅查詢字段中值的一部分?

這是我使用的選擇功能:

select product_id ,product_name 
from product 
where product_name 
IN ('Other Services','%SMS%') 

我使用PL/SQL開發人員。目前我只對這個DBMS有效的解決方案感興趣。

+0

哪個DBMS?你需要解決所有問題的解決方案嗎? – Aleksej

回答

4

嘗試:

SELECT product_id, 
     product_name 
FROM product 
WHERE product_name = 'Other Services' 
    OR product_name LIKE '%SMS%'; 

要小心,一些數據庫服務器情況下LIKE操作靈敏。

+0

以防萬一您不使用不區分大小寫的排序規則> http://dev.mysql.com/doc/refman/5.7/en/case-sensitivity.html這應該做的伎倆'''... OR product_name COLLATE UTF8_GENERAL_CI LIKE'%SMS%'''' – Filip

+1

其他可能性:...或者UPPER(product_name)LIKE'%SMS%'... –

+0

您還可以使用:WHERE CHARINDEX('sms',product_name)> 0 – Stacked

0

通配符租船人「LIKE」不能在「IN」運營商中使用。你用它的方式。

以獲得預期的輸出,你可以使用這樣的東西。

SELECT的product_id, PRODUCT_NAME 從產品 WHERE PRODUCT_NAME = '其他服務' OR PRODUCT_NAME LIKE '%SMS%'

OR

SELECT的product_id, PRODUCT_NAME 從產品 WHERE PRODUCT_NAME = '其他服務' UNION

SELECT product_id, product_name FROM product WHERE product_name LIKE'%SMS%'

+0

我認爲我只能使用「IN」運算符中的確切值和全部短語? –

0

IN運算符不採用帶有通配符的值。請使用LIKE運營商。

select product_id ,product_name 
from product 
where product_name='Other Services' 
OR product_name LIKE '%SMS%'