mysql - 我可以在 CAST() 方法中使用 SUBSTR() 吗?

标签 mysql sql

  • 我有一个名为 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/

相关文章:

php - 服务器过载 : mysql errors

sql - 在TSQL中,如何计算表达式并将其分配给BIT字段?

sql - 在递归 SQL 表中查找最低公共(public)父级

sql - 如何在 SQL 中做百分比/总计?

mysql - 三个表之间的 SQL 查询 - 哪个连接?

php - 表结构

mysql - Apache SOLR 从 MySQL 数据库导入

mysql - 让 SQL 选择最后一个非零金额

mysql - ORDERBY "human"使用 SQL 字符串操作的字母顺序

mysql - mysql 查询中浮点值的位数?