2015-12-30 39 views
0

我有一個學生表,其中存儲了學生的名字,姓氏,名字,dob,電話號碼。我的要求是,如果我輸入學生姓名或姓名的首字母,我從包含輸入字母的整個表中獲取數據。如何根據每個字母搜索整個表

我試過一個查詢,但只有我給出完整的名稱或rollname才能獲取數據。相反,如果我只輸入任何字段的首字母,我需要數據。你能幫我嗎?

SELECT * FROM tbl_users 
    WHERE user_name LIKE '04' UNION 
SELECT * FROM tbl_users 
    WHERE first_name LIKE '04' UNION 
SELECT * FROM tbl_users 
    WHERE roll_num LIKE '04' UNION 
SELECT * FROM tbl_users 
    WHERE first_name LIKE '04' UNION 
SELECT * FROM tbl_users 
    WHERE last_name LIKE '04' UNION 
SELECT * FROM tbl_users 
    WHERE primary_phone_num LIKE '04' 
+0

你可以使用或操作員,並添加%至例如XXX像'04%」 – jMounir

+0

'FIRST_NAME您的首字母LIKE '04''與'first_name ='04'相同' –

+0

你不需要'union'。您可以使用'OR'子句結合條件:'where first_name like '04%'or user_name like '04%'or ...' –

回答

4

使用通配符,像這樣:

... WHERE user_name LIKE '04%' ... 

%符號代表任意數量的任意字符。

-2

其實'LIKE'帶來更多的功能。看到這個:http://www.w3schools.com/sql/sql_wildcards.asp

+0

這是一個很好的例子,說明爲什麼w3fools永遠不會被使用。該頁面顯然是錯誤的。 (標準)SQL LIKE語句中沒有'[charlist]'這樣的事情。 –

1

你需要%後搜索字符串,使之發生。您也可以使用OR而不是多個工會來添加條件。

SELECT * FROM tbl_users 
WHERE 
    user_name LIKE '04%' 
OR first_name LIKE '04%' 
OR roll_num LIKE '04%' 
OR last_name LIKE '04%' 
OR primary_phone_num LIKE '04%' 
0

您可以使用%-sign在類似表達式中定義通配符。

所以,如果你想獲得的一切開始於04,這樣做:

... LIKE '04%' 

所以,如果你想獲得的一切與04結束,這樣做:

... LIKE '%04' 

所以,如果你想獲得有04某處的一切,這樣做:

... LIKE '%04%' 
0
SELECT * FROM tbl_users where user_name LIKE '04%' 
UNION SELECT * FROM tbl_users WHERE first_name LIKE '04%' 
UNION SELECT * FROM tbl_users where roll_num LIKE '04%' 
UNION SELECT * FROM tbl_users WHERE first_name LIKE '04%' 
UNION SELECT * FROM tbl_users where last_name LIKE '04%' 
UNION SELECT * FROM tbl_users WHERE primary_phone_num LIKE '04%' 

請注意,'04'是搜索字符串的首字母,這就是爲什麼我在04之後放入'%'。如果'04'在搜索字符串中間,則使用'%04%'。

0

一個解決方案是使用一個連接(在SQL Server中+)是這樣的:

SELECT * 
FROM students 
WHERE '|' + user_name + 
     '|' + first_name + 
     '|' + last_name + 
     '|' + roll_num + 
     '|' + primary_phone_num 
     LIKE '%|04%'; 
相關問題