我需要返回字符串列的查询(更具体地说,是视图,而不是查询)。字符串将是代码,可能以两个字母 (LJ) 为前缀。如果它是前缀 - 前缀必须被修剪。如果不存在前缀,则应保持不变。是否有可能在 SQL 中做这样的事情?服务器是 FirebirdSQL 1.5。
给定的解决方案都没有奏效,但在他们的帮助下,我能够自己解决。Substring
函数确实存在,但语法不同。您必须使用正确的关键字而不是逗号:
Substring(col from pos for count)
是的,而不是选择列本身,而是编写一个表达式,将前缀 LJ 替换为空
Select case When colName Like 'LJ%'
Then SubString([colName], 2, Len(colName) - 2)
Else ColName End
From ...
SELECT
CASE Substring(columnName, 2, 2) IS 'LJ' THEN Subsrtring(columnName, 2, LEN(columnName) -2) ELSE columnName END
这就是我认为你正在寻找的东西,尚未执行测试,但你明白了要点......
希望能帮助到你!
select case
when substring(MyColumn, 1, 2) = 'LJ'
then substring(MyColumn, 3, len(MyColumn) - 2)
else
MyColumn
end
您可以通过字符串操作来做到这一点:
SELECT CONCAT(REPLACE(LEFT(column_name,2), 'LJ', ''), SUBSTRING(column_name, 3))
不确定这是否适用于 Firebird(在 Mysql 上测试)。
获取FreeUDFLib的副本,它有很多用于字符串、数学、日期、转换、blob 处理等的函数。它会做你想做的事情,还有更多的事情