sql - CAST CASE 语句超出限制
问题描述
我想建立一个报告,在 1 行(整齐的格式)中为我提供所有职位描述类型,而不是每个职位有多行。目前的报告给了我:
Job Title Description Type Posting Description
Cook Responsibilities Make food
Cook Requirements 3 Years of Experience
期望的输出是:
Job Title Responsibilities Requirements
Cook Make food 3 Years of Experience
我首先尝试了一个基本的 CASE 语句,但在这里学到了我需要使用 CAST。但是当我这样做时,我会得到错误。就我目前所拥有的而言,发布描述的完整字符串通过了。我不知道如何解决这个问题。
奖励:字符串包含 HTML 文本......如果有人能告诉我,那将是一个很大的帮助。
CAST(
CASE WHEN ([Description Type Number] =3)
THEN [Enterprise Staffing].[Job Opening].[Posting Description]
END
AS VARCHAR(20))
RESULTING ERROR RQP-DEF-0177 执行操作“sqlOpenResult”状态=“-9”时发生错误。UDA-SQL-0107 在“打开结果”操作期间发生一般异常。ORA-22835: 缓冲区太小,无法进行 CLOB 到 CHAR 或 BLOB 到 RAW 转换(实际:6747,最大值:4000)
CAST(
CASE WHEN ([Description Type Number] =3)
THEN [Enterprise Staffing].[Job Opening].[Posting Description]
END
AS CHAR)
RESULTING ERROR RQP-DEF-0177 执行操作“sqlOpenResult”状态=“-9”时发生错误。UDA-SQL-0107 在“打开结果”操作期间发生一般异常。ORA-25137: 数据值超出范围
解决方案
第一:这是一个交叉表。你可能想多了。
第二:了解你的数据。
看起来 [发布说明] 包含长达 6747 个字符的值。根据错误消息,它可能是text或ntext。varchar(20) 不够长。尝试将其转换为未指定长度的字符似乎会导致不同的问题。假设这是 MS SQL Server,这样的事情可能会有所帮助:
CASE
WHEN ([Description Type Number] =3)
THEN CAST([Enterprise Staffing].[Job Opening].[Posting Description], VARCHAR(8000))
ELSE CAST('', VARCHAR(8000))
END
但是您的错误消息可能表明 Oracle 数据库。( ORA-52137
)
CASE
WHEN ([Description Type Number] =3)
THEN CAST((substr([Enterprise Staffing].[Job Opening].[Posting Description], 1, 4000), VARCHAR2(4000))
ELSE CAST('', VARCHAR2(4000))
END
此外,Cognos 中的 CAST 使用逗号,而不是AS。
推荐阅读
- json - 如何在颤动中将图像作为base64字符串发布到api服务器
- javascript - 提取以 a 和 b 开头的口袋妖怪
- javascript - Sails js客户端原生websocket
- java - 我的读者和作者在这种方法中没有正确关闭吗?
- asp.net-core - 更改 VS2019 输出的颜色
- javascript - 如何等到函数结束才能继续代码节点js
- python - 使用无头 Firefox 时 Selenium 错误的屏幕截图分辨率
- javascript - 具有一个全屏功能的多个图像?
- powershell - 获取安装在远程服务器上的特定 KB
- python - 一旦选择并按下 QButton,如何从 QListWidget 对象中获取项目作为字符串