0

我试图研究这个命令,但我似乎找不到具体的解释。

什么是“索引时的情况”?它有什么作用?它与 case when 有什么不同?什么时候使用?这可用于其他 RDMS 还是 Teradata 特定的?如果您也可以提供一些示例,我真的会这样做。

太感谢了。

sel
CASE    WHEN .00 = 0 THEN 0||'.' 
ELSE    .00 
END
,CASE   WHEN INDEX (.00,'.') = 0 THEN 0||'.' 
ELSE    .00 
END

结果:

  0.     .00
4

3 回答 3

1

Index() 是一个 Teradata 函数。你可以在这里阅读。你可以用其他数据库引擎做同样的事情,但不能用那种语法。

于 2013-04-30T01:03:27.570 回答
1

CASEOracle 和 SQL Server 都支持。查找字符串位置的函数是不同的。

  • 在 Oracle 中,使用INSTR并放置字符串来搜索第二个:

    INSTR('abcd', 'b')
    
  • 在 SQL Server 中,CHARINDEX首先使用并放置要搜索的字符串:

    CHARINDEX('b', 'abcd')
    

以上各项的返回值将是2. 在默认安装中,Oracle 函数会区分大小写,而 SQL Server 搜索则不会,但最好不要假设两者都区分。

于 2013-04-30T01:27:20.737 回答
1
SELECT -- Performs logical test of two numeric values (.00 = 0)
       CASE WHEN .00 = 0 
            THEN 0||'.' 
            ELSE .00 
       END
       -- Checks for the location of the of '.' in the string '.00'.
       -- In this test it returns 1. 1 <> 0.         
     , CASE WHEN INDEX (.00,'.') = 0  
            THEN 0||'.' 
            ELSE .00 
       END

INDEX()是对 ANSI SQL:2008 标准的 Teradata 扩展。POSITION()是 ANSI SQL:2008 兼容的等效项。POSITION('.' IN '.00)

于 2013-04-30T01:31:05.540 回答