2016-04-26 49 views
1
("select * from table where column like ?", ['%' + var1 + '%']) 

顯示類似於「cabcd a」,「xyabcd xyz」,「xyz abc」,「x abc」,「abc y」的結果。但我只希望輸出像「xyz abc」,「x abc」,「abc y」。和ABC存儲在VAR1如何編寫一個sql查詢來查找para中的單詞?

+0

然後你的模式應該在abc前面包含一個空格。 – Sevle

+0

如果abc存儲在變量中,該怎麼辦? – Nitya

回答

0
SELECT * 
FROM #temp1 
WHERE name LIKE '% abc%' 
OR name LIKE 'abc_%' 
0

如何兩邊用空格搜索:

select * from table where column like "% abc%" or column like "%abc %" 
1

我建議:

where concat(' ', column, ' ') like "% abc %" 

這會發現在列的任何地方的話,假設唯一有效的分隔符是空格。

注意:在SQLite中,您將使用||而不是concat()。另外,如果您想要獲得性能,請查看全文索引。

編輯:

如果值存儲在一個變量的代碼如下所示:

"select * from table where concat(' ', column, ' ') like ?", ['% ' + var1 + ' %']) 
0

試試這個:

SELECT * FROM table_name 
WHERE column LIKE "% abc%" OR column LIKE "%abc %" OR column="abc"; 
0

由於您的字符串保存在一個變量試一下像這樣:

SELECT * FROM table WHERE (column LIKE CONCAT('% ', var1, '%') OR column LIKE CONCAT(var1,' %')); 

如果添加更多約束(AND運算符優先於OR),額外的括號可避免混淆。

0

您可以使用REGEXP[[:<:]][[:>:]]字界碑:

SELECT * FROM table WHERE column REGEXP "[[:<:]]abc[[:>:]]"; 
0

您必須聲明變量

DECLARE @Pattern_Val AS CHAR(7) 
SET @Pattern_Val = '% abc %' 

SELECT * FROM table WHERE column LIKE @Pattern_Val 

注意:注意CHAR的長度 - 定義!