mysql - 我可以在 CAST() 方法中使用 SUBSTR() 吗?
问题描述
- 我有一个名为 citys 的表,其中有一列用于时区(
Timezone VARCHAR(10) NOT NULL
时区存储为:+00:00
或-02:00
)。- 我正在尝试选择比属于+02:00
时区的城市晚两个小时的所有城市。 - 我想选择字符串的第三个字符并将其转换为 int。这是我的方法:
SELECT CAST(SUBSTR(Timezone, 3, 1) AS INT)
FROM Cities;
我的查询返回错误 1064。我无法弄清楚为什么我的代码语法不正确。我该如何解决这个问题?谢谢!
SUBSTR(Timezone, 3, 1)
返回我要修改的字符。我不想用 0 替换它,即使它会更容易,因为可以使用该数字进行算术运算可以帮助我在以后的查询中重用代码。
解决方案
您需要 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
推荐阅读
- protocol-buffers - 对 pbtools 中的重复条目进行编码
- python - ldap python result3 函数结果中缺少 LDAP 属性,但出现在 ldapsearch 命令结果中
- oracle - 尝试执行查询时忽略 $
- spring-boot - 基于微服务的环境中的 Keycloak 身份验证流程
- php - 为什么身份验证登录视图不会扩展基本布局
- mysql - SQL 使用来自 2 个不同角色的值计算条件语句的出现次数
- java - maven打包后如何运行jar
- python - 在字符串列表或大字符串中搜索,哪个更快?
- jenkins - 我可以根据队列 URL 检测 Jenkins 构建是否已完成?
- oracle - 如何将 system01.bdf 从另一个数据库导入我的 oracle