SQL中SUBSTRING提取的子串转换为integer整数类型的实现方法
SQL字段类型转换修改方案
你只需在原有的SUBSTRING逻辑外层增加整数类型转换函数即可,以下给出不同场景下的实现方式:
通用标准SQL写法(适配绝大多数数据库,兼容性最高)
使用SQL标准定义的CAST函数,支持PostgreSQL、MySQL、SQL Server等几乎所有主流关系型数据库,修改后的完整代码如下:
CREATE OR REPLACE VIEW vw_uncnload_new AS SELECT icp, CAST(SUBSTRING(channel, 2, 1) AS INTEGER) AS channel_no, price_category, network_code, msn, interval_date, interval_number, compensation_factor, read_value FROM smartco_prod_meterdata.meter_interval
不同数据库专属简化写法
如果需要适配特定数据库的语法,可以选择对应简化写法:
- MySQL:可以直接做隐式转换,或者用SIGNED类型声明
-- 隐式转换写法 SUBSTRING(channel, 2, 1) + 0 AS channel_no -- 显式转换写法 CAST(SUBSTRING(channel, 2, 1) AS SIGNED) AS channel_no
- Oracle:使用内置
TO_NUMBER函数
TO_NUMBER(SUBSTRING(channel, 2, 1)) AS channel_no
提示:你提取的内容本身是数字字段的组成部分,全为数字字符,转换过程不会出现类型不匹配报错,无需额外添加异常处理逻辑。
内容的提问来源于stack exchange,提问作者user17012608
相关产品推荐
相关产品推荐

