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

Как да използвате REPLACE в SQL

При запитване на данни с SQL, необходимостта от манипулиране на базирани на низ резултати е много често срещана. Има много опции в основните системи за релационни бази данни за тази задача. В тази статия ще обсъдим случая на използване и функционалността на функцията REPLACE SQL.

Първи стъпки с REPLACE

Функционалността FIND и REPLACE е добре позната на всички, тъй като идва с всеки текстов редактор. ANSI SQL предлага функционалността REPLACE под формата на вградена системна функция. В тази статия ще използвам SQL Server като моя RDMS по избор.

RЗАМЕСТВАНЕ Функционални параметри

ЗАМЕНИ (низов_израз, низ_модел, низ_замяна)

String_expression е низ, който ще бъде трансформиран, може да бъде единичен низ или колона от входяща SQL заявка.

Модел_низ е шаблон за търсене, който се прилага към низовия израз, който трябва да бъде заменен.

Замяна на низ е заместваща стойност, приложена към низа, когато низ _pattern съответства на низовия_израз .

Нека да разгледаме няколко примера, за да разберем по-добре функцията REPLACE.

Създаване на примерни данни

За този пример ще създам временна таблица да се използва с функцията REPLACE. Имената на колоните ще съвпадат със стойностите на параметрите на функцията.


IF OBJECT_ID(N'tempdb..#TEMP_REPLACE_DEMO') IS NOT NULL
DROP TABLE #TEMP_REPLACE_DEMO


CREATE TABLE #TEMP_REPLACE_DEMO
(
ID INT IDENTITY(1,1),
STRING_EXPRESSION VARCHAR(2000),
STRING_PATTERN VARCHAR(200),
STRING_REPLACEMENT VARCHAR(200)
)

--REPLACE THE VALUE CAR WITH FOX
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('The red car is the fastest car in the race.','car','fox')

--REPLACE THE VALUE 4 WITH 8
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('There are 4 model ford cars in the parking lot.','4','8')

--REMOVE THE BLANK SPACE CHARACTER
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('    This sentence    has     irregular spacing              .       ',' ','')

Прост и динамичен REPLACE Примери

Сега, когато таблицата е заредена с някои примерни данни, нека да разгледаме как ЗАМЕНИ функцията може да се приложи към данните на основно ниво и след това в по-динамичен капацитет.

В първия пример параметрите са твърдо кодирани като низови стойности на функцията.

--REPLACE THE VALUE CAR WITH FOX
SELECT REPLACE('The red car is the fastest car in the race.','car','fox') AS RESULT_FOR_SENTENCE

Стойностите също могат да се четат от таблицата динамично. В този случай стойностите на израза, шаблона и заместването се четат директно от таблицата, вместо да бъдат твърдо кодирани.

--DYNAMIC EXAMPLE FOR ALL COLUMNS IN THE TABLE.
SELECT ID,REPLACE(STRING_EXPRESSION,STRING_PATTERN,STRING_REPLACEMENT) AS RESULT_FOR_TABLE
FROM #TEMP_REPLACE_DEMO

Резултатите за ID 1 са същите като примера по-горе, единствената разлика е, че стойностите са прочетени от отделните колони.

Вложени замествания

Функцията REPLACE може да се използва и във вложен капацитет. Това означава, че резултатите от вътрешната функция REPLACE могат да станат параметър STRING_EXPRESSION на външната заместваща функция.

Ето някои примери за този модел върху примерните данни:

--REPLACE THE VALUE CAR WITH FOX | REPLACE THE VALUE "fastest" WITH "slowest"
SELECT REPLACE(REPLACE('The red car is the fastest car in the race.','car','fox'),'fastest','slowest')


--REMOVE THE BLANK SPACE CHARACTER | REPLACE THE VALUE "irregular" with "no"
SELECT REPLACE(REPLACE('    This sentence    has     irregular spacing              .       ',' ',''),'irregular','NO')

Колиране и РЗАМЯНАНЕ в SQL

Съпоставянето е важен фактор, който трябва да се вземе предвид при работа с низови данни и функцията REPLACE. Съпоставянето може да бъде зададено на множество нива на база данни, като ниво на акаунт или екземпляр, база данни, схема, сесия или ниво на таблица. Тази настройка може да повлияе на това как работи функцията REPLACE.

В този пример може да не очаквате главни букви A да бъдат заменени с малки букви b. Но зависи от съпоставянето, което се наследява от текущата връзка с базата данни.

--REPLACEMENT WITHOUT EXPLICIT COLLATION.
SELECT REPLACE('A','a','b') AS DEFAULT_COLLATION

Този резултат съвпада от a до A поради съпоставянето.

Настройката за съпоставяне в SQL Server може да се провери на ниво сървър:

--VIEW CURRENT COLLATION
SELECT CONVERT (varchar(256), SERVERPROPERTY('collation')); 
 

Ключът тук е CI, който е съкращение от нечувствителен към главни букви. За да приложите функцията REPLACE в капацитет, чувствителен към малки и големи букви, параметърът string_expression може да бъде изрично съпоставен.

-- USE COLLATE TO MATCH CHARACTER CASING FOR REPLACE
SELECT REPLACE('A' COLLATE Latin1_General_CS_AS ,'a','b') as Explicit_Collation;

В този пример, тъй като параметърът string_expression е съпоставен като чувствителен към главните букви, функцията REPLACE не замества оригиналната стойност.

Резюме

Функцията REPLACE е чудесен инструмент за основна и усъвършенствана манипулация на низове в множество системи за релационни бази данни. Тази статия разгледа основното приложение на функцията REPLACE, как да я използвате в динамичен капацитет. Обсъдихме също използването на REPLACE като вложена функция и как съпоставянето може да повлияе на резултатите, върнати от нея.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване на Google BigQuery към софтуера IRI Voracity

  2. Как да класифицирате, намирате и маскирате PII в бази данни...

  3. Свързване на RDBMS и NoSQL:Въведение в 2DX UI клъстер

  4. ERD нотации в моделирането на данни

  5. Проектиране на база данни за система за набиране на персонал