假設表中有像akey1
,bkey2
,ckey3
等多列。
有沒有方法來搜索一個共同的價值匹配具有相同值的多個列SQL
SELECT * FROM table WHERE %key% LIKE 'xyz'
比使用多個AND,OR條件等。 如果解決方案是DBMS特有的,則無關緊要。
假設表中有像akey1
,bkey2
,ckey3
等多列。
有沒有方法來搜索一個共同的價值匹配具有相同值的多個列SQL
SELECT * FROM table WHERE %key% LIKE 'xyz'
比使用多個AND,OR條件等。 如果解決方案是DBMS特有的,則無關緊要。
動態SQL的缺點,你將不得不拼出每個列名稱。但是,你能有點語法捷徑的,只有列出常數一次:
SELECT * FROM table WHERE 'xyz' IN (akey1, bkey2, ckey3)
使用動態SQL,你還是要發出此相同的查詢...但你至少可以使用字符串工具建立起來首先,如果要使用通配符匹配,則可以查看information_schema.columns
視圖以查找它們。但是,這涉及到打開和迭代遊標或將列數據返回給客戶端,其中任何一項涉及的工作量都大大多於在原始查詢中列出列名稱的工作量。希望你至少知道你的數據庫,然後再開始查詢它。
您也可以嘗試這個方法
ALTER PROCEDURE USP_GetClinicNameList
\t
\t @SearchStr varchar(50)
AS
BEGIN
SET @SearchStr = RTRIM(@SearchStr) + '%'
SELECT TOP (10)
\t *
FROM clinic c
WHERE c.cclinicname LIKE @SearchStr
OR c.caddress1 LIKE @SearchStr
OR c.caddress2 LIKE @SearchStr
OR c.ccity LIKE @SearchStr
OR c.cstate LIKE @SearchStr
OR c.cclinicid LIKE @SearchStr
OR c.czip LIKE @SearchStr
OR c.ccliniccode LIKE @SearchStr
OR c.cphone LIKE @SearchStr
ORDER BY c.cclinicname
END
GO
希望這將是更容易理解。
什麼?其他人問十分鐘前不完全相同的東西http://stackoverflow.com/questions/14116221/mysql-correct-syntax-to-use-for-basic-where-clause –
它要求單列名爲'foo' 。在看到這個問題後我問了這個問題。 –
你想在多列中搜索嗎? – bonCodigo