簡體   English   中英

用於搜索的sql語句語法

[英]sql statement syntax for search

我想編寫一個sql語句進行搜索。 這是示例數據庫結構。 在此處輸入圖片說明

例如,我要顯示主題為'13'所有記錄。 如何從上述結構編寫用於查詢13的sql查詢? 有什么建議么?

我可以使用WHERE Topic LIKE '%13%'嗎? 這有什么問題嗎?

試試這個:

SELECT * FROM `TABLE_NAME` WHERE `Topic` LIKE "%13%";

將其保存在多對多關系的第三個表中會更好,更快。

如果要按照示例(單個表)進行保存,請嘗試將數據保存為“,10,13,15,”

之前和之后總是有昏迷,因此以下sql將排除213和132等

select * from  table_name where Topic like '%,13,%'
select * from table where find_in_set("13",topic);

或者如果主題不用作集合,則可以...

select * from table where concat(",",topic) like "%,13,%";

第二個並不是真正的優雅,但我不得不做幾次。

因為數據沒有真正歸一化,所以我使用concat在主題字段中添加了一個逗號,因此可以確保“ like”比較在值的前后均以逗號傳遞。 我想對於這個示例,我們還必須刪除所有不需要的空格,因此最終它最終會像這樣:

select * from TABLE where concat(",",replace(topic," ","")) like "%,13,%";

最終,我們必須知道在主題列中會發生什么,才能提出始終有效的查詢。 過去,我曾在以下情況下會在每個值之前和之后使用定界符將值添加到字符串字段(即主題):

(1)(2)(3)(14)(15)(255)(283)

如果您對主題字段執行了類似的操作,則查詢很簡單...

select * from table where topic like "%(13)%";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM