("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中的單詞?
("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中的單詞?
SELECT *
FROM #temp1
WHERE name LIKE '% abc%'
OR name LIKE 'abc_%'
如何兩邊用空格搜索:
select * from table where column like "% abc%" or column like "%abc %"
我建議:
where concat(' ', column, ' ') like "% abc %"
這會發現在列的任何地方的話,假設唯一有效的分隔符是空格。
注意:在SQLite中,您將使用||
而不是concat()
。另外,如果您想要獲得性能,請查看全文索引。
編輯:
如果值存儲在一個變量的代碼如下所示:
"select * from table where concat(' ', column, ' ') like ?", ['% ' + var1 + ' %'])
試試這個:
SELECT * FROM table_name
WHERE column LIKE "% abc%" OR column LIKE "%abc %" OR column="abc";
由於您的字符串保存在一個變量試一下像這樣:
SELECT * FROM table WHERE (column LIKE CONCAT('% ', var1, '%') OR column LIKE CONCAT(var1,' %'));
如果添加更多約束(AND運算符優先於OR),額外的括號可避免混淆。
您可以使用REGEXP
和[[:<:]]
和[[:>:]]
字界碑:
SELECT * FROM table WHERE column REGEXP "[[:<:]]abc[[:>:]]";
您必須聲明變量
DECLARE @Pattern_Val AS CHAR(7)
SET @Pattern_Val = '% abc %'
SELECT * FROM table WHERE column LIKE @Pattern_Val
注意:注意CHAR的長度 - 定義!
然後你的模式應該在abc前面包含一個空格。 – Sevle
如果abc存儲在變量中,該怎麼辦? – Nitya