字符串或二进制数据将被截断:TRY_CAST 未捕获错误

2023-12-04

下面的查询...

SELECT YEAR(TRY_CAST(m.MetaValue AS DATE))
FROM MetaData m

...导致此错误:

String or binary data would be truncated.

如果我将查询过滤到有效的记录集,错误就会消失:

SELECT YEAR(TRY_CAST(m.MetaValue AS DATE))
FROM MetaData m
WHERE m.MetaKey IN (...)

如果我尝试根据所选表达式进行过滤,查询将再次失败:

SELECT * FROM (
    SELECT YEAR(TRY_CAST(m.MetaValue AS DATE)) AS Yr
    FROM MetaData m
    WHERE MetaKey IN (...)
) x
WHERE x.Yr > 1900

这里发生了什么?我感觉到 SQL Server 正在将查询优化为以下内容,但我不知道如何防止它:

SELECT YEAR(TRY_CAST(m.MetaValue AS DATE)) AS Yr
FROM MetaData m
WHERE MetaKey IN (...)
AND YEAR(TRY_CAST(m.MetaValue AS DATE)) > 1900

如果您遇到此问题MetaValue is > 8,000字节。它抛出一个未被捕获的错误TRY_CAST.

下面是一个简单的演示(数据库 小提琴)

DECLARE @X NVARCHAR(MAX) = 'X'
SET @X = REPLICATE(@X, 4001)

SELECT TRY_CAST(@X AS DATE)

一般来说,SQL Server 可以计算表达式不符合逻辑处理顺序即使所有匹配的都可能导致这种情况WHERE MetaKey IN (...)条件是短字符串(也警告here).

守护着TRY_CAST在额外的CASE表达式应该解决这种情况下的问题

SELECT CASE WHEN DATALENGTH(m.MetaValue) <8000 THEN YEAR(TRY_CAST(m.MetaValue AS DATE)) END
FROM MetaData m
WHERE m.MetaKey IN (...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串或二进制数据将被截断:TRY_CAST 未捕获错误 的相关文章

  • 为什么我的查询在参数化后会中断?

    我有 2 张桌子 Sales and Product Sales可以将产品存储为Idn or Name 传统设计 和Type列指定实际type与之相关 Product等是连接的子集表into这个表来获取真实的数据 在这个例子中 Produc
  • SQL Server xp_cmdshell

    有没有其他方法可以通过以下方式获取文件名列表T SQL以外 INSERT INTO backups filename EXEC master sys xp cmdshell DIR b c some folder with sql back
  • 为什么 SQL Server 不推荐使用 SET ANSI_PADDING OFF?

    根据 MSDN BOL 在线书籍 SET ANSI PADDING http msdn microsoft com en us library ms187403 aspx 在 Microsoft SQL Server 的未来版本中 ANSI
  • 如何从时区名称获取时区偏移量

    我有一个时区名称 例如America Vancouver保存在 SQL Server 数据库中 我想从 SQL 中的时区名称获取 UTC 偏移量 例如America Vancouver has 08 00抵消 那么如何用 SQL 编写查询呢
  • SQL Server - 如何向登录名授予对所有数据库的读取访问权限?

    我需要向新登录授予对服务器上所有 300 个数据库的读取权限 如何在不选中用户映射区域中的 300 个复选框的情况下完成此操作 一种方法是在 SSMS 的查询菜单上设置 结果为文本 然后执行以下命令 它实际上并不进行更改 而是生成一个脚本供
  • .net 应用程序中的内存泄漏

    我正在 VB net 2005 中开发一个桌面应用程序 该应用程序包含一个间隔为 1 分钟的计时器 每次计时器计时 就会执行一组函数 大部分与数据库相关 最初 应用程序运行良好 在进程 任务管理器 中 每次调用计时器时 CPU 使用率都会达
  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • T-SQL 中结果集的幂集(所有组合)

    我需要一个 t sql 代码来获取结果集的幂集 输入示例 ColumnName 1 2 3 Example Output one columns as nvarchar 1 2 3 1 2 1 3 2 3 1 2 3 输出集可能包含重复值
  • 删除或更改 ETL 中的记录

    我有一个表 我在上面构建了 ETL 服务 货物记录 到达 离开 进入表格 我已经这样做了 我的桌子将被删除 当项目标识符第二次到达数据库时 两条记录都被删除 label cost time x2 29 14 5 2020 01 00 00
  • 查询链接服务器时登录失败

    我正在尝试在 SQL Server 中创建链接服务器 Create the link to server uranium EXEC master dbo sp addlinkedserver server N uranium srvprod
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 从 SQL Server 中的子查询值或其他聚合函数获取平均值

    我有 SQL 语句 SQL Server SELECT COUNT ActionName AS pageCount FROM tbl 22 Benchmark WHERE DATEPART dw CreationDate gt 1 AND
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v
  • C# 查询两个数据库的数据

    我目前有一个查询 我正在从两个不同的数据库获取数据 这些数据被附加到一个名为 accountbuys 的列表中 我的第一个表有三个数据条目 3个想要购买股票的帐户 下一张表有 17 个数据点 购买 17 只股票 I am merging t
  • 如何使用 PHP 从 MSSQL 读取图像字段

    我正在创建一个网站 需要同步从离线 MSSQL 服务器读取的在线 MySQL 数据库 除图像字段外 所有通信和从 MSSQL 读取所有字段均工作正常 我已经使用 PHP 和 Mysql 一段时间了 知道如何向 MySQL 数据库插入 检索图
  • INFORMATION_SCHEMA 与 sysobjects

    在 SQL Server 中 INFORMATION SCHEMA 和 sysobjects 之间有什么区别 其中一个是否比另一个提供更多信息 或者它们通常用于不同的用途 sysobjects 与 sys objects 相同吗 如果不是
  • 插入后触发更新表列?

    在同一个表中添加任何记录后 我需要更新表中的列 这是我的sql代码 CREATE TRIGGER dbo EmployeeInsert ON dbo APP Employees AFTER INSERT AS BEGIN SET NOCOU
  • Invoke-Sqlcmd 运行脚本两次

    我遇到了一个非常奇怪的问题并且可以重复 基本上 我使用invoke sqlcmd通过使用 inputfile来调用脚本文件 但是如果脚本文件存在一些执行错误 例如插入到列不应为空的表中 则脚本文件将被执行两次 我也可以从探查器中看到这两个执
  • 指数数组的边界之外。 (微软.SqlServer.smo)

    我在用SQL Server 2008 R2 它运行良好 但最近 我改变了我的托管服务器 我发现他们已经安装了SQL Server 2012在服务器上 现在 问题是通过连接服务器数据库后SQL Server 2008 R2 当我单击任何表名称
  • 清除表中的所有行将身份规范重置为零并且不影响外键?

    我们已经创建了数据库框架以及所有关系和依赖关系 但表内部只是虚拟数据 我们需要删除这些虚拟数据 并开始添加正确的数据 我们怎样才能清除所有内容并将主键 IsIdentity 是 保留为零 并且不影响外部表关系结构 多谢 您可以采取以下步骤

随机推荐

  • 使用一个或多个参数实例化一个新的 PHP 类

    我有这个获取功能 public static function fetch class key try obj new class key catch Exception e return false return obj 它通过调用该类的
  • Scala:通过 if 语句更正表示类型的类型推断

    这是后续two 问题关于表示类型 它们是特征的类型参数 旨在表示有界类型成员 或类似的东西 底层的类型 我已经成功创建了类的实例 例如ConcreteGarage 有实例cars有界类型成员CarType trait Garage type
  • 实体框架 CTP5 代码优先映射 - 同一个表中的外键

    我如何使用模型构建器来映射这样的东西 哪里有一个可以为空的外键引用相同的表主键 Table Task taskID int pk taskName varchar parentTaskID int nullable FK 任务类别 publ
  • 如何在实体框架中使用“In”SQL关键字?

    这是我的 SQL 命令 SELECT KEY NAME from COMPANY c WHERE KEY IN select KEY from USER COMPANY where UserId UserId order by NAME a
  • 使用 JSON.Net 解析自定义日期格式

    我收到一个 JSON 日期以下格式 launch date 1250553600 我应该如何修改以下内容以包含自定义日期时间解析器 该解析器允许我将该数字转换为DateTime object JsonConvert DeserializeO
  • 创建 XSLT 转换以展平 multiRef 编码的 SOAP 消息

    输入是一个mutliRef 编码的SOAP 消息 文档 你怎么用 用于展平多引用的 XSLT 可以引用multiref节点来使用 多次 并且自身递归引用其他multiRef 节点 该结构中唯一可以安全引用的部分是 multiRef 元素以及
  • 如何设置机会状态 - Dynamics CRM?

    我正在尝试更新以下状态开放的机会通过使用赢得机会请求和失去机会请求MSDN 中提供了 API 我遵循了 MSDN 中给出的代码 我什至参考了 stackoverflow 的设置机会状态 但是 当我运行以下代码时开放的机会它抛出错误指出 Lo
  • 具有多个值的 HashMap [重复]

    这个问题在这里已经有答案了 我想在java中实现具有多个值的哈希表 即 if sample is a hashmap sample put 1 1 sample put 1 2 and sample get 1 将返回 2 个值 我怎样才能
  • 从数据框中删除列中以“@”开头的单词

    我有一个名为 tweetscrypto 的数据框 我试图从 text 列中删除以字符 开头的所有单词 并将结果收集到新列 clean text 中 其余的单词应该保持完全相同 tweetscrypto clean text tweetscr
  • 为什么强命名程序集不能使用未签名的程序集?

    要对程序集 A 进行签名 您必须确保 A 使用的所有程序集 B C D 均已签名 然后是 B C D 使用的所有程序集 依此类推 我不明白这有什么安全好处 我认为它应该可以防止篡改 但是程序集 A 可以打开任何文件 并且这些文件可以被篡改
  • 如何查看 Word 文件是否受密码保护?

    我正在维护一个归档系统 该系统必须将各种文档格式转换为 tif 我的问题是受密码保护的 Word 文档 如果文档受密码保护 则 Word 会弹出一个响应 要求我输入密码 如果文档受密码保护 只要我可以告诉客户他需要对此采取措施 那就可以了
  • 如何使用 JavaScript 检查对象中是否存在值

    我在 JavaScript 中有一个对象 var obj a test1 b test2 如何检查 test1 是否作为值存在于对象中 您可以将对象的值转换为数组并测试字符串是否存在 它假设对象没有嵌套并且字符串是完全匹配的 var obj
  • 将鼠标悬停在 Firefox 中的输入自动完成功能时 Div 消失

    我编了一个JSFiddle 这是一个登录表单 将鼠标悬停在 登录 菜单上时出现 但是当将鼠标悬停在输入自动完成功能上时 登录表单会消失 我不希望出现这种情况 如何在不禁用输入自动完成的情况下保留登录表单 这只能用 css 来实现吗 div
  • 如何在 C# 中调整 Windows 窗体窗体的大小?

    我正在制作一个 Windows 窗体应用程序 我希望按下按钮后表单高度增加 我该怎么做呢 Use the Height财产 例如 this Height newHeight
  • 任何现有的 IoC 容器都可以动态创建惰性代理类吗?

    我研究不同的 DI 模式 现在我对惰性生命周期实现感兴趣 例如 我想编写一个代理类 将工厂隐藏在服务接口后面 任何现有的 IoC 容器 NET 都可以在运行时动态创建这种代理类吗 interface IService void Foo vo
  • Android 按钮仅在第二次单击时有效

    我正在开发我的第一个 Android 计算器应用程序 我被一个缺陷困住了 我添加了一些按钮 单击这些按钮时 它会将相应的文本放在EditText场地 主要问题描述如下 运行项目时 必须单击按钮两次才能将相应的文本放在EditText第一次领
  • 防止移动默认键盘在聚焦 时显示

    这就是我正在尝试的方式 但输入仍然 启动 iPhone 的键盘 ps 我想这样做是因为我正在使用 datepicker 插件来获取日期 通过添加属性readonly or readonly readonly 到输入字段 您应该阻止任何人在其
  • 如何从 Android 版 Google Places API 获取地点详细信息?

    我想从自动完成地点服务获得的预测中获取地点的详细信息 城市名称 邮政编码等 我的代码如下 Places GeoDataApi getAutocompletePredictions googleApiClient query bounds n
  • git 中的邪恶合并——它们从哪里来?

    I ve read这个问题和答案 但我不清楚是谁创造了 任何父母都不会出现的变化 是 git merge 算法搞砸了吗 或者是因为用户必须手动调整冲突才能构建内容 从而引入父级中不存在的新代码 正确的第一条评论中有解释answer 您可以在
  • 字符串或二进制数据将被截断:TRY_CAST 未捕获错误

    下面的查询 SELECT YEAR TRY CAST m MetaValue AS DATE FROM MetaData m 导致此错误 String or binary data would be truncated 如果我将查询过滤到有