当前位置: 首页 > 面试题库 >

如何在SELECT INTO中控制基于文字的列的可空性

满昊然
2023-03-14
问题内容

我注意到当我使用此语句时,该Action列不可为空:

SELECT TOP 0 SerialNumber, 0 [Action] INTO #MyTable FROM FSE_SerialNumber

但是,当我使用此语句时,该Action列可以为空:

SELECT TOP 0 SerialNumber, CAST(0 as int) [Action] INTO #MyTable FROM FSE_SerialNumber

我以这种方式创建表的原因是因为我不希望临时表从服务器默认排序规则或其他地方继承SerialNumber的排序规则。我希望它匹配FSE_SerialNumber..SerialNumber的排序规则。

我的问题是,我可以依靠强制转换函数为我提供可为空的列,还是这个定义不明确并且可能会更改。为什么强制转换突然使列为空?是否有更好的方法(除注释外)来说明我的意图是在那里获取可为空的列?


问题答案:

似乎在这里有一个明确的答案。复制到这里:

元数据是根据源列和SELECT列表中使用的表达式确定的。以下是规则:

1.
例如,使用内置函数(例如SUBSTRING,LEFT,RIGHT等)的任何表达式(ISNULL除外)都被引擎视为可为NULL。因此,如果您使用CAST(somecol
as char(8)),则表达式可以为NULLable

  1. 文字,常量,全局变量(如@@ DBTS,@@ ERROR等)被视为不可为空,因为它们总是返回一些值

  2. 如果expression是一个列,则从源列元数据中得出可为空性

因此,要使SELECT列表中的表达式或列不为null,请在该列或表达式周围使用ISNULL。

因此,看起来您可以安全使用CAST表达式。



 类似资料:
  • 问题内容: 我创建了一个用于创建表达式的函数 现在,当我用 然后就可以了 但是当我通过时 然后,它给出错误,即abc不是列。 我试图将其转换 但这是行不通的。 如果我打电话给我 有没有办法获取operator1的类型,并在此基础上创建能够映射到相同内容类型的literal_colum? 问题答案: 任何文字值都可以转换为表达式构造:

  • 问题内容: 有没有简单的方法可以在控制台中显示Java流程的滚动百分比?我有一个在特定过程中生成的百分比数据类型(双精度),但是我可以将其强制到控制台窗口并刷新,而不是为每个新的百分比更新打印一行新内容吗?我正在考虑推送cls和进行更新,因为我在Windows环境中工作,但是我希望Java具有某种内置功能。欢迎所有建议!谢谢! 问题答案: 您可以打印回车符以将光标放回到行首。 例:

  • 问题内容: 我在子模块中有一些基于注释的控制器。这些模块被部署为jar文件。 jar文件中基于注释的控制器未加载到spring配置。 我正在使用eclipse中的导出实用程序手动导出jar文件。 有没有人遇到过这个问题? 问题答案: 使用eclipse中的导出实用程序导出jar文件时,有一个选项称为添加目录项。选中此选项并导出jar文件,这将解决问题。

  • 所以这个问题已经嘲弄我好几天了。如有任何帮助,不胜感激!我制作了一个LinkedHashMap,它存储字符串每个部分的可能组合,我试图在字符串的ArrayList中获得所有排列,同时维护字符串顺序。例如,如果映射为:A=ab,B=C,则组合为:ab ac abb abc

  • 所以,我对脚本和批处理文件完全陌生。 我想根据要复制的文件列表复制文件。我有一个文本文件的文件列表复制,我希望脚本复制所有这些文件逐行从一个源目录。 例如,我有1000多个文件要复制,每个文件夹有3个文件要创建并放入。以下是文件名的格式示例: 一旦这些被复制,我想将它们移动到我使用文本文件和命令创建的文件夹中: 现在,通过我的脚本,我想将它复制的文件移动到相应的文件夹中。基本上,如果文件名包含文件

  • 问题内容: 是否可以使用任何基于角色的开源访问控制系统? 问题答案: 布兰登·萨维奇(Brandon Savage)在他的PHP软件包“ ApplicationACL ” 上做了一个演示,该演示可能会或可能不会完成基于角色的访问。PHPGACL可能也能正常工作,但是我不能肯定地告诉您。 但是,我可以告诉您的是Zend Framework 的Zend_ACL组件将执行基于角色的设置(但是您必须子类化