2013-04-30 5 views
0

Я попытался изучить эту команду, но я не могу найти конкретного объяснения.как оператор «case when index» сравнивается с оператором «case index»

Что такое «случай, когда индекс»? Что это делает? как он отличается от случая, когда? Когда он используется? Возможно ли это для других 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

ответ

1

Index() является функцией 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() является расширением Teradata в ANSI SQL: 2008. POSITION() - эквивалент ANSI SQL: 2008. POSITION('.' IN '.00)

Смежные вопросы