Skip to content

Instantly share code, notes, and snippets.

@ktaranov
Created March 4, 2020 14:57
Show Gist options
  • Save ktaranov/df864c6beabe078947e2155c784dd3c2 to your computer and use it in GitHub Desktop.
Save ktaranov/df864c6beabe078947e2155c784dd3c2 to your computer and use it in GitHub Desktop.
print @@version
USE tempdb;
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
CREATE OR ALTER FUNCTION dbo.TryParseAFID (@stringAFID nvarchar(MAX))
RETURNS bigint
WITH SCHEMABINDING--, INLINE = OFF
AS
BEGIN
DECLARE @AfidParse bigint;
IF CHARINDEX('%', @stringAFID ) > 0
BEGIN
IF CHARINDEX('%20', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%20',' ' );
IF CHARINDEX('%21', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%21','!' );
IF CHARINDEX('%23', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%23','#' );
IF CHARINDEX('%24', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%24','$' );
IF CHARINDEX('%25', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%25','%' );
IF CHARINDEX('%26', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%26','&' );
IF CHARINDEX('%27', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%27','''');
IF CHARINDEX('%28', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%28','(' );
IF CHARINDEX('%29', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%29',')' );
IF CHARINDEX('%2a', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%2a','*' );
IF CHARINDEX('%2b', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%2b','+' );
IF CHARINDEX('%2c', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%2c',',' );
IF CHARINDEX('%2d', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%2d','-' );
IF CHARINDEX('%2e', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%2e','.' );
IF CHARINDEX('%2f', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%2f','/' );
IF CHARINDEX('%3a', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%3a',':' );
IF CHARINDEX('%3b', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%3b',';' );
IF CHARINDEX('%3c', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%3c','<' );
IF CHARINDEX('%3d', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%3d','=' );
IF CHARINDEX('%3e', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%3e','>' );
IF CHARINDEX('%3f', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%3f','?' );
IF CHARINDEX('%40', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%40','@' );
IF CHARINDEX('%5b', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%5b','[' );
IF CHARINDEX('%5c', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%5c','\' );
IF CHARINDEX('%5d', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%5d',']' );
IF CHARINDEX('%5e', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%5e','^' );
IF CHARINDEX('%5f', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%5f','_' );
IF CHARINDEX('%60', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%60','`' );
IF CHARINDEX('%7b', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%7b','{' );
IF CHARINDEX('%7c', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%7c','|' );
IF CHARINDEX('%7d', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%7d','}' );
IF CHARINDEX('%7e', @stringAFID ) > 0 SET @stringAFID = Replace(@stringAFID,'%7e','~' );
--SELECT @stringAFID = Replace(Replace(@stringAFID,'%7e','~' ),'%7d','}' );
END;
SET @AfidParse = CAST(@stringAFID AS bigint);
RETURN @AfidParse;
END;
GO
SELECT dbo.TryParseAFID(34681);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment