如何在sql查询中获取子字符串
我试图从表名中int元素的0-7位置获取子字符串,所以当我插入这个如何在sql查询中获取子字符串,sql,substring,dbeaver,Sql,Substring,Dbeaver,我试图从表名中int元素的0-7位置获取子字符串,所以当我插入这个 select substring(column_name,0, 6) as new_name from table_name 我越来越 SQL错误[42883]:错误:函数pg_catalog.substring(bigint, 整数,整数)不存在 提示:没有与给定名称和参数类型匹配的函数。你 可能需要添加显式类型转换 职位:8 org.postgresql.util.PSQLException:错误:函数 pg_目录。子字
select substring(column_name,0, 6) as new_name from table_name
我越来越
SQL错误[42883]:错误:函数pg_catalog.substring(bigint,
整数,整数)不存在
提示:没有与给定名称和参数类型匹配的函数。你
可能需要添加显式类型转换
职位:8
org.postgresql.util.PSQLException:错误:函数
pg_目录。子字符串(bigint、integer、integer)不存在
提示:没有与给定名称和参数类型匹配的函数。你
可能需要添加显式类型转换。职位:8
所以在向varchar(8)添加一些cast之后
明白了吗
SQL错误[42601]:错误:语法错误位于或接近“,”位置:28org.postgresql.util.PSQLException:错误:语法错误位于或接近“,” 职位:28
我不知道我做错了什么。谢谢。您可以
将int
列转换为varchar
,然后将子字符串从1
转换为7
select substring(cast([your-column] as varchar(100)),1, 7)
例如:
declare @a int ='1234567890';
select substring(cast(@a as varchar(100)),1, 7) as res
输出:
res
1234567
直接转换为文本:
select substring(column_name::text, 1, 7) as new_name
from table_name
请注意,SQL(与类C语言不同)使用基于1的索引,因此第一个字符是position1
。与类C语言不同的是,substring的第二个参数是长度(而不是唯一的结束索引)。函数不是标准化的,每个数据库可以有不同的,并且通常都有。你的标签说的是dbeaver而不是postgrest谢谢你,我缺少的是@。
select substring(column_name::text, 1, 7) as new_name
from table_name