如何在sql查询中获取子字符串

Mer*_*ian 5 sql substring dbeaver

我正在尝试从表名称中的 int 元素中的 0-7 位置获取子字符串,因此当我插入此值时

select substring(column_name,0, 6) as new_name from table_name 
Run Code Online (Sandbox Code Playgroud)

我正进入(状态

SQL错误[42883]:错误:函数pg_catalog.substring(bigint,integer,integer)不存在

提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。

位置:8

org.postgresql.util.PSQLException:错误:函数 pg_catalog.substring(bigint,整数,整数)不存在

提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。位置:8

所以在向 varchar(8) 添加一些转换之后

select substring(varchar(8),column_name,0, 6) as new_name from table_name
Run Code Online (Sandbox Code Playgroud)

得到这个

SQL 错误 [42601]:错误:“,”位置或附近的语法错误:28
org.postgresql.util.PSQLException:错误:“,”位置或附近的语法错误:28

我不知道我做错了什么。谢谢。

Jib*_*ran 4

您可以cast将列int设为varchar,然后制作substring17

select substring(cast([your-column] as varchar(100)),1, 7)
Run Code Online (Sandbox Code Playgroud)

例子:

  declare @a int ='1234567890';
  select substring(cast(@a as varchar(100)),1, 7) as res
Run Code Online (Sandbox Code Playgroud)

输出 :

  res 
  1234567
Run Code Online (Sandbox Code Playgroud)