首页 > 解决方案 > 我可以在 CAST() 方法中使用 SUBSTR() 吗?

问题描述

SELECT CAST(SUBSTR(Timezone, 3, 1) AS INT) FROM Cities;

我的查询返回错误 1064。我无法弄清楚为什么我的代码语法不正确。我该如何解决这个问题?谢谢!

SUBSTR(Timezone, 3, 1)返回我要修改的字符。我不想用 0 替换它,即使它会更容易,因为可以使用该数字进行算术运算可以帮助我在以后的查询中重用代码。

标签: mysqlsql

解决方案


您需要 UNSIGNED (not INT) 将数字字符串转换为 INTEGER

set @timezone ='+00:00';
SELECT CAST(SUBSTR(@Timezone, 3, 1) AS UNSIGNED)

SELECT CAST(SUBSTR(Timezone, 3, 1) AS UNSIGNED)
FROM cities

推荐阅读