- 我有一个名为 cities 的表,其中有一个时区列(
Timezone VARCHAR(10) NOT NULL
时区存储如下:+00:00
或-02:00
)。 - 我正在尝试选择比属于+02:00
时区的城市晚两个小时的所有城市。 - 我想选择字符串的第三个字符并将其转换为 int。这是我的方法:
SELECT CAST(SUBSTR(Timezone, 3, 1) AS INT)
来自城市;
我的查询返回错误 1064。我无法弄清楚为什么我的代码语法不正确。我该如何解决这个问题?谢谢!
SUBSTR(Timezone, 3, 1)
返回我要修改的字符。我不想用 0 替换它,即使它会更容易,因为可以对该数字进行算术运算可以帮助我在以后的查询中重用代码。
最佳答案
您需要 UNSIGNED(不是 INT)才能将数字字符串转换为 INTEGER
set @timezone ='+00:00';
SELECT CAST(SUBSTR(@Timezone, 3, 1) AS UNSIGNED)
和
SELECT CAST(SUBSTR(Timezone, 3, 1) AS UNSIGNED)
FROM cities
关于mysql - 我可以在 CAST() 方法中使用 SUBSTR() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57570488/