28. november 2002 - 11:26Der er
14 kommentarer og 1 løsning
Fjern x antal tegn i udtræk (MSSQL)
? Jeg søger en SQL syntaks der kan fjerne x antal tegn i en streng fra et bestemt tegn, eksempelvis en IP adresse hvor jeg vil fjerne de sidste 3 ell.(2,1) ciffer fra det sidste punktum af. Funktionerne Left() eller Right() kan ikke bruges, da ip adressen jo ikke altid har det samme antal tegn i strengen. så ? hvordan skal denne syntaks se ud.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
declare @ip as nvarchar(20) set @ip = '192.168.1.10'
select @ip as IP, Reverse(Right(Reverse(@ip), Len(@ip) - CharIndex('.', @ip)+1)) as [IP Uden punktum], Reverse(Right(Reverse(@ip), Len(@ip) - CharIndex('.', @ip)+2)) as [IP med punktum]
Kan den håndtere forskelligt antal forekomster af delim i strengen? Jeg ved godt, at en ip-adresse har tre punktummer, men en web-adresse kan i princippet godt have mere end tre punktummer:
Der er lige en mindre fejl i nedenstående syntaks, hvis der er mere end 10 tegn i IP adressen, kommer tegnet efter det 10 tegn med ud, så hvis du har en kommentar til dette vil jeg blive glad.
SELECT Ping_IP_retur, REVERSE(RIGHT(REVERSE(Ping_IP_retur), Len(Ping_IP_retur) - CHARINDEX('.', Ping_IP_retur) + 1)) AS [IP Uden punktum], REVERSE(RIGHT(REVERSE(Ping_IP_retur), Len(Ping_IP_retur) - CHARINDEX('.', Ping_IP_retur) + 2)) AS [IP med punktum] FROM Ip_svar
SELECT Ping_IP_retur, REVERSE(RIGHT(REVERSE(Ping_IP_retur), Len(Ping_IP_retur) - CHARINDEX('.', REVERSE(Ping_IP_retur)))) AS [IP Uden punktum], REVERSE(RIGHT(REVERSE(Ping_IP_retur), Len(Ping_IP_retur) - CHARINDEX('.', REVERSE(Ping_IP_retur)) + 1)) AS [IP med punktum] FROM Ip_svar
declare @ip as nvarchar(20) set @ip = '192.168.1.100'
select @ip as IP, Reverse(Right(Reverse(@ip), Len(@ip) - CharIndex('.', Reverse(@ip)))) as [IP Uden punktum], Reverse(Right(Reverse(@ip), Len(@ip) - CharIndex('.', Reverse(@ip))+1)) as [IP med punktum],
SubString(@ip, 1, CharIndex('.', @ip, CharIndex('.', @ip)+1)-1) as [Test IP uden punktum], SubString(@ip, 1, CharIndex('.', @ip, CharIndex('.', @ip)+1)) as [Test IP med punktum]
Rosene ord -> det virker selv i MSSQL Jeg takker endnu engang. Jeg skal lige finde ud af, hvordan jeg giver dig de sidste point's
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.