J'ai écrit ceci pour rechercher une chaîne dans sql de n'importe quelle colonne dans une table mais dans certains cas il répond anormalement. L'exemple est donné ici.rechercher une chaîne dans sql à partir de n'importe quelle colonne dans une table
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
S'il vous plaît développer sur «répondre anormalement» et s'il vous plaît ajouter la balise RDBMS appropriée - est-ce SQL Server? –
Oui c'est SQL Server, ici quand je donne comme '% f%' il renvoie une ligne. Mais dans cette rangée il n'y a pas de 'f' –
Le code que vous avez posté n'a aucun sens. Vous insérez une seule ligne dans '@ tablepay', puis vous en sélectionnez une en utilisant une clause where qui n'a aucun rapport avec les enregistrements de la table_. Bref, votre code n'a absolument aucun sens. –