[英]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.