casting - 如何修复 SQL 错误 [306] [S0002]:text、ntext 和 image 数据类型无法比较或排序,除非使用 IS NULL 或 LIKE 运算符?
问题描述
使用“=”(等于运算符)比较 sql server 文本数据类型时出现问题。这是我的查询看起来像
SELECT * FROM dbeplanningv3.dbo.usulan_dpr
WHERE CONVERT(VARCHAR, evaluasi) is null
or
trim(CONVERT(VARCHAR, evaluasi)) = '' ORDER BY [detail] ASC OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY
正如您在我上面的脚本中看到的那样。我正在使用它进行数据类型转换,CONVERT(VARCHAR, evaluasi)
但仍然无法正常工作,并且出现错误,SQL Error [306] [S0002]: The text, ntext, and image data types cannot be compared or sorted,
这是我的表结构的一部分,
请帮助我
解决方案
在您的查询中:
SELECT * FROM dbeplanningv3.dbo.usulan_dpr
WHERE CONVERT(VARCHAR, evaluasi) is null
or
trim(CONVERT(VARCHAR, evaluasi)) = '' ORDER BY [detail] ASC OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY
onlyORDER BY [detail]
可能导致此错误,所以我假设[detail]
是类型text
(此列在您的屏幕截图中不可见)。为避免该错误,应将其转换为 varchar(max):
SELECT * FROM dbeplanningv3.dbo.usulan_dpr
WHERE CONVERT(VARCHAR, evaluasi) is null
or
trim(CONVERT(VARCHAR, evaluasi)) = '' ORDER BY convert(varchar(max), [detail]) ASC OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY
但重要的问题是为什么在 SQL Server 2012 上仍然使用text
数据类型?您应该将它们转换为varchar(max)
并避免一直转换它们。
此外,这个演员CONVERT(VARCHAR, evaluasi) is null
阵容毫无意义。可以evaluasi is null
直接查。
推荐阅读
- snowflake-cloud-data-platform - 数据库中所有表的聚合
- r - 多次产生相同的输出
- php - 在php中的选择下拉列表中限制相同的值不起作用
- opencv - 如何在python中给定矩形的4个顶点绘制边界框?
- javascript - window.frames 仅返回基本窗口
- javascript - 如何在 Node.js 中使用 googleapis 创建新的 Google 电子表格
- java - Java Mail:发送电子邮件时出现异常
- android - 如何使用数据类中的 Glide 绑定 RecyclerView 图像
- javascript - 提供的数据不是 ReactJS 中有效的 base64-String jsPDF
- javascript - `class Popup 扩展了 DivOverlay 什么
`javascript中的语法是什么意思?