2013-04-30 70 views
0

我試圖研究這個命令,但似乎無法找到具體的解釋。「索引時的情況」與「索引的索引」聲明相比如何

什麼是「索引時的情況」?它有什麼作用?這與案件有何不同? 什麼時候使用? 這是可用於其他RDMS或Teradata特定? 如果你還可以提供一些例子,我會真的。

非常感謝。

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

結果:

0.  .00 
+0

可能是PATINDEX功能 – realnumber3012 2013-04-30 00:46:53

回答

1

指數()是一個Teradata的功能。你可以閱讀關於它here。你可以用其他數據庫引擎做同樣的事情,但不能用這種語法。

1

CASE受Oracle和SQL Server支持。查找字符串位置的函數是不同的。

  • 在Oracle中,使用INSTR並把要搜索的字符串第二:

    INSTR('abcd', 'b') 
    
  • 在SQL Server中,使用CHARINDEX並把要搜索的字符串第一:

    CHARINDEX('b', 'abcd') 
    

以上各項的返回值爲2。在默認安裝中,Oracle函數將區分大小寫,而SQL Server搜索不會,但最好不要假設。

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)