CAST CASE 语句超出限制
CAST CASE statement exceeding limit
我想建立一个报告,让我在 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))
结果错误
RQP-DEF-0177 执行操作 'sqlOpenResult' status='-9' 时出错。
UDA-SQL-0107 在操作 "open result" 期间发生一般异常。
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)
结果错误
RQP-DEF-0177 执行操作 'sqlOpenResult' status='-9' 时出错。
UDA-SQL-0107 在操作 "open result" 期间发生一般异常。
ORA-25137: 数据值超出范围
首先:这是一个交叉表。你可能想多了。
第二:了解你的数据。
看起来[发帖说明]包含的值长达6747个字符。根据错误信息,可能是 text 或 ntext。 varchar(20) 不够长。尝试将其转换为未指定长度的字符似乎会导致不同的问题。假设这是 MS SQL 服务器,这样的事情可能会有所帮助:
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。
我想建立一个报告,让我在 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))
结果错误 RQP-DEF-0177 执行操作 'sqlOpenResult' status='-9' 时出错。 UDA-SQL-0107 在操作 "open result" 期间发生一般异常。 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)
结果错误 RQP-DEF-0177 执行操作 'sqlOpenResult' status='-9' 时出错。 UDA-SQL-0107 在操作 "open result" 期间发生一般异常。 ORA-25137: 数据值超出范围
首先:这是一个交叉表。你可能想多了。
第二:了解你的数据。
看起来[发帖说明]包含的值长达6747个字符。根据错误信息,可能是 text 或 ntext。 varchar(20) 不够长。尝试将其转换为未指定长度的字符似乎会导致不同的问题。假设这是 MS SQL 服务器,这样的事情可能会有所帮助:
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。