1

SQLの質問があります。以下のSELECTステートメントでは、太字で強調表示した部分を除いて、すべて正常に機能します。私がやろうとしているのは、ユーザーがデータベース内の特定のルールを検索できるようにすることです。残念ながら、実際にはRule列がないため、特定のフィールド値を連結して、ユーザーの検索テキストと比較するための文字列を作成する必要があります。

太字の部分が機能しない理由はありますか?理論的には、このステートメントで、文字列 "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; 
4

2 に答える 2

3

使用している DB を指定していないため、SQL サーバーを想定します。

SQL Server では、文字列は'I'm a string'二重引用符ではなく単一引用符で指定されます。

例については、MSDN の+ (文字列連結)を参照してください。

于 2012-07-05T19:00:04.660 に答える
0

別の可能性として、part_num が数値である可能性があります。その場合は、連結する前に数値を文字列 (varchar) にキャストします。

于 2012-07-05T19:03:06.977 に答える