0

我需要返回字符串列的查询(更具体地说,是视图,而不是查询)。字符串将是代码,可能以两个字母 (LJ) 为前缀。如果它是前缀 - 前缀必须被修剪。如果不存在前缀,则应保持不变。是否有可能在 SQL 中做这样的事情?服务器是 FirebirdSQL 1.5。


给定的解决方案都没有奏效,但在他们的帮助下,我能够自己解决。Substring函数确实存在,但语法不同。您必须使用正确的关键字而不是逗号:

Substring(col from pos for count)
4

5 回答 5

2

是的,而不是选择列本身,而是编写一个表达式,将前缀 LJ 替换为空

   Select case When colName Like 'LJ%' 
                Then SubString([colName], 2, Len(colName) - 2)
                Else ColName End
   From ... 
于 2009-10-02T17:26:42.213 回答
1
SELECT
  CASE Substring(columnName, 2, 2) IS 'LJ' THEN Subsrtring(columnName, 2, LEN(columnName) -2) ELSE columnName END

这就是我认为你正在寻找的东西,尚未执行测试,但你明白了要点......

希望能帮助到你!

于 2009-10-02T17:25:19.153 回答
0
select case 
           when substring(MyColumn, 1, 2) = 'LJ' 
               then substring(MyColumn, 3, len(MyColumn) - 2) 
           else 
               MyColumn 
       end
于 2009-10-02T17:33:35.503 回答
0

您可以通过字符串操作来做到这一点:

SELECT CONCAT(REPLACE(LEFT(column_name,2), 'LJ', ''), SUBSTRING(column_name, 3))

不确定这是否适用于 Firebird(在 Mysql 上测试)。

于 2009-10-02T17:46:29.287 回答
0

获取FreeUDFLib的副本,它有很多用于字符串、数学、日期、转换、blob 处理等的函数。它会做你想做的事情,还有更多的事情

于 2009-10-02T21:14:08.357 回答