sql >> Databasteknik >  >> RDS >> Sqlserver

Ersätter endast den n:te instansen av tecken

För att ersätta den första instansen av ett tecken skulle jag rekommendera användningen av STUFF och CHARINDEX funktioner. STUFF infogar en sträng i en annan sträng. Den tar bort en angiven längd av tecken i den första strängen vid startpositionen och infogar sedan den andra strängen i den första strängen vid startpositionen.

DECLARE @str varchar(100) = '^1402 WSN NIAMLAB^teertS htimS 005'
SELECT STUFF(@str, CHARINDEX('^', @str), 1, '&')

Observera att du också kan använda STUFF i en fråga enligt följande:

SELECT STUFF(<yourcolumn>, CHARINDEX('^', <yourcolumn>), 1, '&')
FROM <yourtable>


  1. Kan inte logga ut i PHP

  2. SQL CASE och lokala variabler

  3. Använda en join med tre tabeller när ett fält kan vara null

  4. MySQL 5.5 &5.6 standardvärden