2012-07-05 66 views
1

我有一個SQL問題。除了我以粗體突出顯示的部分之外,在下面的SELECT語句中一切正常。我想要做的是讓用戶在數據庫中搜索特定的規則。不幸的是,我實際上並沒有規則列,所以我需要連接某些字段值來創建一個字符串,以便與用戶的搜索文本進行比較。SQL - SELECT語句 - 將字符串連接到

任何想法爲什麼粗體部分不起作用?理論上,我希望此語句檢查字符串「Rule」+ part_num(其中part_num是part_num字段中包含的值)是否等於searchtext的值(searchtext的值是從我的PHP腳本中獲得的)。

我做了一些關於連接字符串用於SQL目的的研究,但沒有一個似乎符合法案。那裏有人有什麼建議嗎?

SELECT id, 
     part_num, 
     part_title, 
     rule_num, 
     rule_title, 
     sub_heading_num, 
     sub_heading, 
     contents 
FROM rules 
WHERE part_title LIKE "%'.$searchtext.'%" 
     OR rule_title LIKE "%'.$searchtext.'%" 
     OR sub_heading LIKE "%'.$searchtext.'%" 
     OR contents LIKE "%'.$searchtext.'%" 
     OR "rule" + part_num LIKE "%'.$searchtext.'%" --RULE PLUS PART_NUM DOESN'T WORK 
ORDER BY id; 
+0

您使用的是哪種數據庫平臺? – 2012-07-05 19:00:35

+0

另外,你的意思是說「rule_num」而不是「part_num」? – Tim 2012-07-05 19:19:03

+0

@Tim。不,part_num是我的意思,是我需要使用的變量。感謝大家的建議 - 非常感謝。我設法找到了一個解決方案:CONCAT(「Rule」,part_num) – ehul 2012-07-06 20:43:42

回答

3

由於您沒有指定使用哪個數據庫,因此我將假設SQL Sever。

字符串在SQL Server中用單引號'I'm a string'指定,而不是雙引號。

有關示例,請參閱MSDN上的+ (String Concatenation)

+0

我正在使用SQL Server,是的。我將雙引號(「)改爲單引號('),但現在我的腳本返回一個錯誤,這個語句完美地使用雙引號(當」rule「+ part_num部分被移除時)。 – ehul 2012-07-05 19:54:09

+0

除非我多年來錯過了一些東西,否則你的SQL語句不可能用雙引號「完美地工作」...... – 2012-07-05 20:23:56

+0

嗨James。上述SQL語句用於我的PHP腳本,它在事實上用雙引號(「)完美工作。我設法找到了一個解決方案:「CONCAT(」Rule「,part_num) – ehul 2012-07-06 20:42:49

0

另一種可能性是part_num是一個數字。如果是這樣,請在連接之前將該數字轉換爲字符串(varchar)。

+0

這將不得不** **除了雙引號問題 – 2012-07-05 19:03:35

+0

@Tim:謝謝!我試圖將INT轉換爲字符串,但現在我的腳本返回我嘗試過:SELECT ID,CAST(partnum AS varchar(5)) – ehul 2012-07-05 19:53:06