Oracle
 sql >> Baza danych >  >> RDS >> Oracle

SIGN() Funkcja w Oracle

W Oracle SIGN() funkcja zwraca znak swojego argumentu jako -1 , 0 lub 1 , w zależności od tego, czy argument jest ujemny, zerowy czy dodatni, a także w zależności od tego, czy argument jest typu NUMBER lub liczba zmiennoprzecinkowa.

Składnia

Składnia wygląda tak:

SIGN(n) 

Gdzie n może być dowolnym liczbowym typem danych lub dowolnym nienumerycznym typem danych, który można niejawnie przekonwertować na NUMBER i zwraca NUMBER .

Jak odszyfrować wynik

Rzeczywisty wynik będzie zależał od tego, czy argumentem jest NUMBER typ lub binarną liczbę zmiennoprzecinkową (BINARY_FLOAT i BINARY_DOUBLE ).

Dla wartości NUMBER typ, znak to:

  • -1, jeśli n <0
  • 0, jeśli n =0
  • 1 jeśli n >0

W przypadku binarnych liczb zmiennoprzecinkowych SIGN() funkcja zwraca bit znaku liczby. Bit znaku to:

  • -1, jeśli n <0
  • +1, jeśli n >=0 lub n =NaN

Przykład

W tym przykładzie przekazuję NUMBER typ:

SELECT SIGN(78.50)
FROM DUAL; 

Wynik:

 ZNAK(78.50) ______________ 1

Oto kolejny przykład demonstrujący różne wyniki za pomocą NUMBER typ:

SELECT 
    SIGN(7),
    SIGN(0),
    SIGN(-7)
FROM DUAL; 

Wynik:

ZNAK(7) ZNAK(0) ZNAK(-7) __________ __________ ____________ 1 0 -1

Binarne liczby zmiennoprzecinkowe

Oto przykład tego, co się dzieje, gdy rzutujemy te liczby jako binarne liczby zmiennoprzecinkowe:

SELECT 
    SIGN(CAST(7 AS BINARY_FLOAT)) AS "7",
    SIGN(CAST(0 AS BINARY_FLOAT)) AS "0",
    SIGN(CAST(-7 AS BINARY_FLOAT)) AS "-7",
    SIGN(binary_float_nan) AS "NaN"
FROM DUAL; 

Wynik:

7 0 -7 NaN ____ ____ _____ ______ 1 1 -1 1

Dodałem także NaN do listy (binary_float_nan literał zmiennoprzecinkowy reprezentuje wartość typu BINARY_FLOAT dla którego warunek IS NAN to prawda).

Argumenty nieliczbowe

Oto, co się dzieje, gdy przekazujemy argument nieliczbowy, którego nie można przekonwertować na numeryczny typ danych:

SELECT SIGN('Bruce')
FROM DUAL; 

Wynik:

Błąd zaczynający się od wiersza:1 w poleceniu -SELECT SIGN('Bruce')FROM DUALError report -ORA-01722:nieprawidłowy numer

Wartości puste

Przekazywanie null zwraca null :

SET NULL 'null';

SELECT SIGN(null)
FROM DUAL; 

Wynik:

 SIGN(NULL) _____________ null

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Nieprawidłowa liczba argumentów

Wywołanie SIGN() bez przekazywania żadnych argumentów zwraca błąd:

SELECT SIGN()
FROM DUAL; 

Wynik:

Błąd zaczynający się od wiersza:1 w poleceniu -SELECT SIGN()FROM DUALError w wierszu polecenia:1 Kolumna:8Raport o błędzie -SQL Błąd:ORA-00909:nieprawidłowa liczba argumentów00909. 00000 - "nieprawidłowa liczba argumentów"*Przyczyna:*Działanie:

A przekazanie niewłaściwej liczby argumentów skutkuje błędem:

SELECT SIGN(2, 3)
FROM DUAL; 

Wynik:

Błąd zaczynający się od wiersza:1 w poleceniu -SELECT SIGN(2, 3)FROM DUALError w wierszu polecenia:1 Kolumna:8Raport o błędzie -SQL Błąd:ORA-00909:nieprawidłowa liczba argumentów00909. 00000 - "nieprawidłowa liczba argumentów"*Przyczyna:*Działanie:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rekurencja w zapytaniu do bazy danych w celu uzyskania wyniku hierarchicznego za pomocą Hibernate - Java

  2. Co to w ogóle jest wersja główna?

  3. Uzyskaj liczbę wszystkich tabel w schemacie

  4. Jak wyeliminować godziny wolne od pracy w Oracle

  5. TO_TIMESTAMP_TZ() Funkcja w Oracle