次のようなクエリがあります。
SELECT *
FROM qAll
WHERE name not in('Alina,Charaidew,Sukapha')
これは機能していません。そうするための最良の方法は何ですか?このリストは動的に生成され、毎回異なる可能性があります。
次のようなクエリがあります。
SELECT *
FROM qAll
WHERE name not in('Alina,Charaidew,Sukapha')
これは機能していません。そうするための最良の方法は何ですか?このリストは動的に生成され、毎回異なる可能性があります。
CF では、クエリ パラメータに cfqueryparam を使用する必要があります。リストをパラメーターとして渡すには、list 属性を cfqueryparam に追加する必要があります。クエリは次のようになります。
<cfset nameList = "Alina,Charaidew,Sukapha">
<cfquery name="queryName" datasource="#Application.ds#">
SELECT * FROM qAll WHERE name NOT IN (<cfqueryparam cfsqltype="CF_SQL_VARCHAR" list="Yes" value="#nameList#" >)
</cfquery>
はクエリ
qAll
オブジェクトです。
'Alina,Charaidew,Sukapha'
は単一の値を表しているため、次のようにcfqueryparam
のリストを使用してリストであることを指定する必要があります。attribute
<cfquery dbtype="query" name="someName">
SELECT *
FROM qAll
WHERE name NOT IN (<cfqueryparam cfsqltype="cf_sql_varchar" value="Alina,Charaidew,Sukapha" list="yes" separator=",">)
</cfquery>
注:- これは大文字と小文字が区別されます。
ここには 2 つの部分があります。
あなたのもの:
SELECT *
FROM qAll
WHERE name not in('Alina,Charaidew,Sukapha')
正しい SQL:
SELECT *
FROM qAll
WHERE name not in('Alina','Charaidew','Sukapha')
<cfset names = "Alina,Charaidew,Sukapha">
<cfquery name="queryName" datasource="#Application.ds#">
SELECT * FROM qAll WHERE name NOT IN (<cfqueryparam cfsqltype="CF_SQL_VARCHAR" list="Yes" value="#nameList#" >)
</cfquery>