Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция SOUNDEX() в Oracle

В Oracle, SOUNDEX() функцията връща символен низ, съдържащ фонетичното представяне на неговия аргумент. Това е известно като низ на Soundex.

Soundex е фонетичен алгоритъм за индексиране на имена по звук, както се произнася на английски. Ако две думи звучат еднакво, те трябва да имат същия низ на Soundex. Ако две думи звучат сходно, но не съвсем еднакво, техният низ на Soundex може да изглежда подобно, но не съвсем същото.

Функцията приема един аргумент:низът, от който да върне низа на Soundex.

Синтаксис

Синтаксисът е така:

SOUNDEX(char)

Където char е низът, от който да се върне низът на Soundex. Може да бъде от всеки тип данни CHAR , VARCHAR2 , NCHAR или NVARCHAR2 . Връщаната стойност е от същия тип данни като аргумента.

Пример

Ето един основен пример:

SELECT SOUNDEX('Bat')
FROM DUAL;

Резултат:

B300

Ето още един пример, който сравнява низа на Soundex, върнат от подобни, но различни, звучащи думи:

SELECT 
    SOUNDEX('Bat'),
    SOUNDEX('Cat'),
    SOUNDEX('Cap')
FROM DUAL;

Резултат:

   SOUNDEX('BAT')    SOUNDEX('CAT')    SOUNDEX('CAP') 
_________________ _________________ _________________ 
B300              C300              C100             

И ето една, която сравнява думи, които не звучат еднакво:

SELECT 
    SOUNDEX('Ponzi'),
    SOUNDEX('Bracket'),
    SOUNDEX('Heavy')
FROM DUAL;

Резултат:

   SOUNDEX('PONZI')    SOUNDEX('BRACKET')    SOUNDEX('HEAVY') 
___________________ _____________________ ___________________ 
P520                B623                  H100                

Точни съвпадения

Ето пример за двойки думи, които имат съвпадащ низ на Soundex, въпреки че са различни думи, с различни значения:

SELECT 
    SOUNDEX('Dam') AS Dam, 
    SOUNDEX('Damn') AS Damn, 
    SOUNDEX('Too') AS Too, 
    SOUNDEX('Two') AS Two
FROM DUAL;

Резултат:

    DAM    DAMN     TOO     TWO 
_______ _______ _______ _______ 
D500    D500    T000    T000   

Пример за база данни

Ето пример за получаване на низа на Soundex от заявка за база данни:

SELECT 
    country_name, 
    SOUNDEX(country_name)
FROM countries
FETCH FIRST 10 ROWS ONLY;

Резултат:

   COUNTRY_NAME    SOUNDEX(COUNTRY_NAME) 
_______________ ________________________ 
Argentina       A625                     
Australia       A236                     
Belgium         B425                     
Brazil          B624                     
Canada          C530                     
Switzerland     S326                     
China           C500                     
Germany         G655                     
Denmark         D562                     
Egypt           E213                     

Можем също да използваме SOUNDEX() в WHERE клауза за връщане само на онези редове, които звучат като дадена дума:

SELECT
    employee_id,
    first_name,
    last_name
FROM employees
WHERE SOUNDEX(first_name) = SOUNDEX('Stephen');

Резултат:

   EMPLOYEE_ID    FIRST_NAME    LAST_NAME 
______________ _____________ ____________ 
           100 Steven        King         
           128 Steven        Markle       
           138 Stephen       Stiles      

Празен низ

Ето какво се случва, когато се подаде празен низ за всеки даден аргумент:

SET NULL 'null';
SELECT SOUNDEX('')
FROM DUAL;

Резултат:

null

По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.

Нулев аргумент

Предаването на null връща null :

SELECT SOUNDEX(null)
FROM DUAL;

Резултат:

null

Липсващ аргумент

Извикване на SOUNDEX() без подаване на аргументи води до грешка:

SELECT SOUNDEX()
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT SOUNDEX()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

И предаването на твърде много аргументи също води до грешка:

SELECT SOUNDEX('Gosh', 'Dang')
FROM DUAL;

Резултат:

Error starting at line : 1 in command -
SELECT SOUNDEX('Gosh', 'Dang')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01097

  2. Обработка на изключения за пакетно вмъкване на JDBC

  3. Пример за задействане на Oracle WHEN

  4. Как да работим с функции за дата в Oracle sql

  5. WSJDBCConnection не обвива обекти от тип Oracle jdbc Connection