- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个问题:
USE [SomeDatabase];
GO
DECLARE @percentageValue decimal(15,4) = 1.50;
SELECT a.ID, a.Amount, a.Status
FROM [dbo].ATable as a
INNER JOIN [dbo].BTable as b
ON a.LinkToB = b.ID
INNER JOIN [OtherDatabase].[dbo].CTable as value
ON value.[Key] = CONCAT(N'APrefixAboutThisLongThatsNecessaryBecauseDontAsk',b.AltID)
WHERE a.Status = N'SomeStatus'
AND a.Amount > (COALESCE(TRY_CONVERT(DECIMAL(15,2), value.Value), 0)*@percentageValue);
GO
(为保密起见,实际列名已编辑)
我得到的是传统的:“消息 8152,第 16 级,状态 10,第 3 行字符串或二进制数据将被截断。”错误。 Google 告诉我,我正在尝试在一个太小的列中插入一些内容,这是有道理的。
但是,这不是 INSERT 操作(这实际上是我查询的所有 SQL),所以我无法终生检测截断发生的位置或为什么。我认为这是 Transact-SQL 的核心内容,但最奇怪的问题是,尽管出现错误,我还是从查询中获得了结果。
根据要求,这是表架构的相关部分。
USE [SomeDatabase]
CREATE TABLE [dbo].[ATable](
[ID] [uniqueidentifier] NOT NULL,
[Amount] [decimal](15, 2) NOT NULL,
[Status] [nvarchar](32) NOT NULL,
[LinkToB] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED
(
[ID] ASC
))
GO
CREATE TABLE [dbo].[BTable](
[ID] [uniqueidentifier] NOT NULL,
[AltID] [uniqueidentifier] NOT NULL
CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED
(
[ID] ASC
))
GO
USE [OtherDatabase]
GO
CREATE TABLE [dbo].[CTable](
[ID] [uniqueidentifier] NOT NULL,
[Key] [nvarchar](100) NOT NULL,
[Value] [nvarchar](max) NOT NULL)
CONSTRAINT [PK_TableC] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
最佳答案
好的,一旦你知道了这个 secret ,这个就很有趣了。
正如评论(和架构)中所述,value.Value 是一个 nvarchar(max)。这是传统的键值反模式,用于存储您不想存储在特定位置的数据。现在,我们在此列上运行 try_convert(nvarchar(max)),但这很好,因为
ON Key = N'SomethingSpecific'
子句意味着它只在 Key=N'SomethingSpecific' 行上运行 try_convert,对吗?
对吗?
没有。
根据表中的数据,执行计划可以选择try_convert列中的每一个值。而nvarchar(max)中的一行是超出 try_convert 参数的容量。因此崩溃。这也解释了为什么我得到了我期望的所有结果,它正在评估这些结果,然后在我期望它忽略的数据行上崩溃。
更好的是,不相关的数据或结构更改可以改变执行计划的行为,所以这个错误可以很容易地“海森错误”并消失给更多/更少的数据,对结构的微小更改,并且在一次调试过程中,我很确定 空格。
那么最简单的解决方案是什么?将配置值放入变量中,分别用于 try_convert,并使用它来代替。
对于任何设计数据库或编写数据库代码的人:
关于sql - 当没有 INSERT 语句时,为什么我得到 "String or Binary Data would be Truncated Error"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25813425/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!