Daten von einem „Blobdata“ lesbar machen…


/*
SQL um die Daten in einem "Blobdata" lesbar zu machen...
Grundsätzlich macht dies nur Sinn, wenn der Inhalt vom Typ ASCII ist
*/
--select name, * from sysobjects order by name 
IF EXISTS (select name, * from sysobjects where name = 'fx_blob2varchar' and Type = 'FN') Drop function fx_blob2varchar
go
CREATE FUNCTION fx_blob2varchar ( @blob datablob )
RETURNS varchar(max)
AS
BEGIN
DECLARE @i bigint
DECLARE @end bigint
DECLARE @ergebnis varchar(max)
SELECT @i = 1, @ergebnis = '', @end=DATALENGTH(@blob)
WHILE @i < @end
BEGIN
	If ascii(substring(@blob,@i,1)) <= 31 or ascii(substring(@blob,@i,1)) >= 127
		Set @ergebnis = @ergebnis + '.'
	ELSE
		Set @ergebnis = @ergebnis + char(substring(@blob,@i,1))
	SET @i = @i + 1
END
RETURN @ergebnis
END
go


/*
--Im Beispiel wird auch noch das "SELECT" herausgeschnitten:
Select  sysdba.fx_blob2varchar (data) as Rohdaten,
	substring(
		sysdba.fx_blob2varchar (data), 
		charindex('SELECT ', sysdba.fx_blob2varchar (data)), 
		len(sysdba.fx_blob2varchar (data)) 
		) as Herausgeschnitten
	,name
	,displayname
	,*
from Plugin 
where type = 23 --also nur 'GRUPPEN'
	and sysdba.fx_blob2varchar (data) like '%GC_MANUFACTURERPROD%'
ORDER BY displayname ASC
*/