Sql 如何对空值使用cfqueryparam从表中获取记录?
我可以使用cfqueryparam作为空值从表中获取记录吗 我的示例选择查询是Sql 如何对空值使用cfqueryparam从表中获取记录?,sql,coldfusion,cfquery,cfqueryparam,Sql,Coldfusion,Cfquery,Cfqueryparam,我可以使用cfqueryparam作为空值从表中获取记录吗 我的示例选择查询是 Select * from users where lastname is null Dan Bracuk的编辑从这里开始 以下是针对oracle数据库的示例查询: <cfquery name="x" datasource="pamot"> select * from clinic_fu where hsc_number = <cfqueryparam cfsqltype="cf_sql_varc
Select * from users where lastname is null
Dan Bracuk的编辑从这里开始
以下是针对oracle数据库的示例查询:
<cfquery name="x" datasource="pamot">
select *
from clinic_fu
where hsc_number = <cfqueryparam cfsqltype="cf_sql_varchar" value="fred" null="yes">
</cfquery>
你如何解释这一点?是这样的:
where hsc_number is null
还是这个
where hsc_number = ''
debug SQL语句的解释方式是
,其中hsc_number=null
,这对于所有记录都是错误的
在某些SQL语言中(可能只是MySQL),您可以创建空安全表达式。当指定null时,该语句既可以作为is null语句使用,也可以作为指定值时的equals语句使用。我个人不使用Oracle DB,但根据我的快速研究,空安全表达式的唯一选项将包括可能影响性能的函数调用
当您需要空记录时,切换到的if语句为空
<cfquery name="x" datasource="pamot">
select *
from clinic_fu
where hsc_number
<cfif conditionForNull>
is null
<cfelse>
= <cfqueryparam cfsqltype="cf_sql_varchar" value="#hsc_number#" />
</cfif>
</cfquery>
挑选*
来自吴福诊所
hsc\U号在哪里
是空的
=
我发现null属性对于INSERT和update语句比select语句更有用
<cfquery result=>
INSERT INTO users
(first_name, last_name)
VALUES
(<cfqueryparam cfsqltype="cf_sql_varchar" value="#form.firstName#" null="#form.firstName eq ""#" />,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#form.lastName#" null="#form.lastName eq ""#" />);
</cfquery>
插入到用户中
(姓、名)
价值观
(,
);
在该语句中,当名称值为空字符串时,将向数据库传递null值,而不是表单值。这不是一个非常现实的例子,因为我个人会编写空字符串而不是null,但它显示了如何使用null属性。您可以这样做,但您拥有的更好。除非您传递的值可能是null
,否则不需要在该查询中使用cfqueryparam。如果是这样,请查看cfqueryparam
的null
属性。如果null是常数(不是变量),则在其上使用cfqueryparam没有任何好处。@VersatileClab-我不完全清楚您的问题和原因(这可能会影响答案)。丹尝试了一下,做了一次重要的编辑。新问题是否反映了你在这里真正要问的问题?解释上有点问题。其中hsc_number=null是无效的sql。@DanBracuk-同意使用ansi标准的值为null,而不是等于。有趣的是,行为实际上取决于dbms。有些,比如sql server,实际上支持非标准的col=null
语法。(尽管它很快就会消失)。我发现这是一条艰难的道路。。。
<cfquery result=>
INSERT INTO users
(first_name, last_name)
VALUES
(<cfqueryparam cfsqltype="cf_sql_varchar" value="#form.firstName#" null="#form.firstName eq ""#" />,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#form.lastName#" null="#form.lastName eq ""#" />);
</cfquery>