/*
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
*/