Ich schrieb dies für die Suche einer Zeichenfolge in SQL aus einer beliebigen Spalte in einer Tabelle, aber in einigen Fällen reagiert es abnormal. Das Beispiel ist hier angegeben.Suche einer Zeichenfolge in SQL aus einer beliebigen Spalte in einer Tabelle
declare @tablepay table
(
payno varchar(500),
lastmodified nvarchar(500)
)
declare @columnname table
(
[rownumber] INT IDENTITY,
colname varchar(500)
)
insert into @tablepay (payno, lastmodified)
select 'PAY/2014','abcd'
insert into @columnname(colname)
select TN.N.value('local-name(.)', 'sysname') as ColumnName
from
(select TV.*
from (select 1) as D(N)
outer apply (select top(0) * from @tablepay) as TV for xml path(''), elements xsinil, type) as TX(X)
cross apply TX.X.nodes('*') as TN(N)
DECLARE @count INT
DECLARE @begincount INT
DECLARE @clname as VARCHAR(50)='';
SET @begincount = 1
select @count = count(*) from @columnname
declare @tlname varchar(50)
set @tlname = '@tablepay'
WHILE @begincount <= @count
BEGIN
set @clname = (select colname from @columnname where rownumber = @begincount)
declare @text as varchar(100)
select * from @tablepay where @clname like '%f%'
SET @begincount = @begincount + 1
END
Bitte erweitern Sie auf "anormal reagieren" und fügen Sie bitte das entsprechende RDBMS-Tag - ist es SQL Server? –
Ja das ist SQL Server, hier gebe ich wie '% f%' eine Zeile zurück. Aber in dieser Zeile gibt es kein 'f' –
Der Code, den Sie gepostet haben, macht keinen Sinn. Sie fügen eine einzelne Zeile in '@ tablepay' ein, dann wählen Sie daraus _eine where-Klausel aus, die keine Beziehung zu den Datensätzen in der Tabelle_ aufweist. Kurz gesagt macht dein Code absolut keinen Sinn. –