Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何对空值使用cfqueryparam从表中获取记录?_Sql_Coldfusion_Cfquery_Cfqueryparam - Fatal编程技术网

Sql 如何对空值使用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

我可以使用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_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>