首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DB2 SQL转换为SMALLINT

DB2 SQL转换为SMALLINT
EN

Stack Overflow用户
提问于 2018-07-20 16:39:16
回答 2查看 4.8K关注 0票数 1

我有一个CHAR列,需要转换为SMALLINT列。CHAR列被定义为CHAR(4),并包含类似于此'360 '的数据,最后有一个空格。

我试图像这样使用CAST函数:

代码语言:javascript
复制
CAST(DCA_REVN_CD AS SMALLINT) AS REVN_CD

这是我得到的错误:

-420 SMALLINT函数不能接受字符串参数的值。

有人能帮忙吗?我意识到这可能是因为数据中有一个空格。

EN

回答 2

Stack Overflow用户

发布于 2018-07-20 18:18:55

按照要求,above...would TRIM()工作?

不确定这是否有效,因为我已经有几年没有用DB2编写代码了,但这确实适用于MSSQL:

代码语言:javascript
复制
CAST(RTRIM(LTRIM(DCA_REVN_CD)) AS SMALLINT) AS REVN_CD

或者DB2版本(我认为):

代码语言:javascript
复制
CAST(TRIM(DCA_REVN_CD) AS SMALLINT) AS REVN_CD
票数 0
EN

Stack Overflow用户

发布于 2018-07-20 20:24:44

如果您只有尾随空格,则SMALLINT函数或您的强制转换将工作:

代码语言:javascript
复制
$ db2 "create table test (id smallint, value char(10))" ;
$ db2 "insert into test values (1, '1  ')" ;
$ db2 "insert into test values (2, '2 ')" ;
$ db2 "insert into test values (3, '3')" ;
$ db2 "select smallint(VALUE) from test";
1
-----------
          1
          2
          3

因此,您的强制转换应该正常工作,这意味着您在该列中有字符串而不是空格:

代码语言:javascript
复制
$db2 "insert into test values (4, '4 A')" ;
$db2 select SMALLINT(VALUE) from test";
SQL0420N  Invalid character found in a character string argument of the
function "SMALLINT".  SQLSTATE=22018

建议:如果您使用的是db2 11或更高版本,则可以使用REGEXP_SUBSTR从该列中提取数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51447020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档