簡體   English   中英

有關SQL子句的問題

[英]Question about SQL clause

我有一個名稱如下的數據庫:

Maria Garcia Garralon 
Jose Maria Perez Gutierrez

我也有一個過濾器來搜索名稱。 想象一下用戶寫在過濾器中

瑪麗亞·加拉隆

(第一個和最后一個字)

在那種情況下,是否有任何SQL子句找到記錄“ Maria Garcia Garralon”?

問候

哈維

您可以拆分搜索詞並執行多個LIKE子句。 如:

WHERE
    Field LIKE '%maria%'
AND
    Field LIKE '%garralon%'

另外,如果您可以確定搜索詞的順序以及它們之間的空格,則可以始終執行類似的操作。

WHERE
    Field LIKE REPLACE('maria garralon', ' ', '%')

是的,您可以按照以下方式使用可怕的不可擴展查詢段:

where upper(name) like 'MARIA % GARRALON'

或者你可以用正確的方法做:-)

引入諸如first_and_last_name類的另一列,並使用插入/更新觸發器為其填充正確的值maria garralon 然后為該列建立索引,您的查詢將非常快:

where first_and_last_name = 'maria garralon'

這會將計算成本移動到它所屬的插入/更新位置,而不是不必要地產生成本的選擇位置。 數據僅在插入/更新時發生更改,因此這是您唯一需要承擔此費用的時間。

如果您的需求比簡單的名字和姓氏更復雜,則可以在觸發器中填充其他表。

我想您需要比較兩次:

(偽語法)名稱LIKE'%Maria%'和名稱LIKE'%Garralon%'

會是這樣的:

select * from <TABLE>
 where <FIELD> like '%'+REPLACE(<NAME>,' ',' % ')+'%'

暫無
暫無

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

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