Delen via


REGEXP_REPLACE (Transact-SQL)

van toepassing op:Azure SQL DatabaseSQL-database in Microsoft Fabric

Notitie

Als preview-functie is de technologie die in dit artikel wordt gepresenteerd, onderworpen aan aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews.

Retourneert een gewijzigde brontekenreeks die is vervangen door een vervangende tekenreeks, waarbij het exemplaar van het reguliere expressiepatroon is gevonden. Als er geen overeenkomsten worden gevonden, retourneert de functie de oorspronkelijke tekenreeks.

REGEXP_REPLACE 
     (
      string_expression,
      pattern_expression [, string_replacement [, start [, occurrence [, flags ] ] ] ]
     )

Argumenten

string_expression

Een expressie van een tekenreeks.

Dit kan een constante, variabele of kolom van tekenreeks zijn.

Gegevenstypen: teken, nchar, varcharof nvarchar.

pattern_expression

Patroon voor reguliere expressies dat overeenkomt. Meestal een letterlijke tekst

Gegevenstypen: teken, nchar, varcharof nvarchar. pattern_expression ondersteunt een maximale tekenlengte van 8000 bytes. 

string_replacement

Tekenreeksexpressie die de vervangende tekenreeks aangeeft voor overeenkomende subtekenreeksen en vervangt de subtekenreeksen die overeenkomen met het patroon. De string_replacement kan gegevenstypen char, varchar, nchar en nvarchar zijn. Als er een lege tekenreeks (' ') is opgegeven, worden alle overeenkomende patronen verwijderd en wordt de resulterende tekenreeks geretourneerd. De standaard vervangende tekenreeks is de lege tekenreeks (' ').

De string_replacement kan \nbevatten, waarbij n 1 tot en met 9 is, om aan te geven dat de bronsubtekenreeks die overeenkomt met de n'n's haakjes (subexpressie) van het patroon moet worden ingevoegd, en kan & bevatten om aan te geven dat de subtekenreeks die overeenkomt met het hele patroon moet worden ingevoegd. Schrijf \ als u een letterlijke backslash in de vervangende tekst moet plaatsen.

Bijvoorbeeld

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) \2-\3')  

Retourneert:

(123) 456-7890 

Als de opgegeven \n in string_replacement groter is dan het aantal groepen in de pattern_expression, negeert de functie de waarde.

Bijvoorbeeld:

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) (\4)-xxxx')

Retourneert:

(123) ()-xxxx

starten

Geef de beginpositie op voor de zoekopdracht in de zoekreeks. Facultatief. Het type is int of bigint.

De nummering is gebaseerd op 1, wat betekent dat het eerste teken in de expressie is 1 en de waarde moet worden >= 1. Als de beginexpressie kleiner is dan 1, wordt er een fout geretourneerd. Als de beginexpressie groter is dan de lengte van string_expression, retourneert de functie string_expression. De standaardwaarde is 1.

exemplaar

Een expressie (positief geheel getal) die aangeeft welk exemplaar van de patroonexpressie in de brontekenreeks moet worden doorzocht of vervangen. De standaardwaarde is 1. Hiermee wordt gezocht naar het eerste teken van de string_expression. Voor een positief geheel getal nwordt gezocht naar het nth exemplaar dat begint met het eerste teken na het eerste exemplaar van de pattern_expression, enzovoort.

vlaggen

Een of meer tekens die de modifiers opgeven die worden gebruikt voor het zoeken naar overeenkomsten. Het type is varchar of teken, met maximaal 30 tekens.

Bijvoorbeeld ims. De standaardwaarde is c. Als er een lege tekenreeks wordt opgegeven (' '), wordt deze behandeld als de standaardwaarde ('c'). Geef c of andere tekenexpressies op. Als de vlag meerdere tegenstrijdige tekens bevat, gebruikt SQL Server het laatste teken.

Als u bijvoorbeeld opgeeft ic de regex hoofdlettergevoelige overeenkomsten retourneert.

Als de waarde een ander teken bevat dan de waarden in Ondersteunde vlagwaarden, retourneert de query een fout zoals in het volgende voorbeeld:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Ondersteunde vlagwaarden
Vlag Beschrijving
Ik Niet hoofdlettergevoelig (standaard onwaar)
m Modus met meerdere regels: ^ en $ overeenkomen met begin-/eindregel naast begin-/eindtekst (standaard onwaar)
s Laat . overeenkomen met \n (standaard onwaar)
c Hoofdlettergevoelig (standaard true)

Retourwaarde

Uitdrukking.

Voorbeelden

Vervang alle exemplaren van a of e door X in de productnamen.

SELECT REGEXP_REPLACE (PRODUCT_NAME, '[ae]', 'X', 1, 0, 'i') FROM PRODUCTS; 

Vervang het eerste exemplaar van cat of dog door pet in de productbeschrijvingen

SELECT REGEXP_REPLACE (PRODUCT_DESCRIPTION, 'cat|dog', 'pet', 1, 1, 'i') FROM PRODUCTS; 

De laatste vier cijfers van de telefoonnummers vervangen door sterretjes

SELECT REGEXP_REPLACE (PHONE_NUMBER, '\d{4}$', '****') FROM CUSTOMERS;