Condividi:
Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!
Moderatori: Anthony47, Triumph Of Steel, archimede
di Dylan666 » 29/04/19 11:21
Ciao a tutti, avrei bisogno di cercare una particolare stringa TUTTE le colonne di UNA particolare tabella.
Avevo da parte una Stored Procedure simile alla mia esigenza, che però cerca in TUTTE le tabelle ed era questa:
https://blog.sqlauthority.com/2017/07/1 ... procedure/Ho provato a "adattarla" eliminando il primo ciclo e aggiungendo il parametro per il nome della tabella ma devo aver toppato qualcosa
- Codice: Seleziona tutto
/*USAGE:
EXEC SearchAllColumns @TableName = 'NomeTabella', @SearchStr = 'Mia Stringa'
GO
*/
CREATE PROC SearchAllColumns
(
@TableName nvarchar(100),
@SearchStr nvarchar(100)
)
AS
BEGIN
-- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
-- Purpose: To search all columns of a table for a given search string
-- Originally written by: Narayana Vyas Kondreddi
-- Site: http://vyaskn.tripod.com
CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
SET NOCOUNT ON
DECLARE @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''') -- MODIFICA QUI PER CAMBIARE LE CONDIZIONI DEL LIKE
WHILE (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar') -- MODIFICA QUI PER CAMBIARE I TIPI DI COLONNA DA CONTROLLARE
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)
IF @ColumnName IS NOT NULL
BEGIN
INSERT INTO #Results
EXEC
(
'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
FROM ' + @TableName + ' (NOLOCK) ' +
' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
)
END
END
END
SELECT ColumnName, ColumnValue FROM #Results
Sarà sicuramente una scemenza ma potete aiutarmi a trovare l'errore?
Grazie
-
Dylan666
- Moderatore
-
- Post: 40100
- Iscritto il: 18/11/03 16:46
di Dylan666 » 29/04/19 14:03
Sono arrivato a questo risultato, pare funzionare ma non sono in grado di capire se ci sono grossi errori o pezzi inutili... me lo ricontrollate?
- Codice: Seleziona tutto
/*USAGE:
EXEC SearchAllColumns @TableName = 'NomeTabella', @SearchStr = 'Mia Stringa'
GO
*/
CREATE PROC SearchAllColumns
(
@TableName nvarchar(100),
@SearchStr nvarchar(100)
)
AS
BEGIN
-- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
-- Purpose: To search all columns of a table for a given search string
-- Originally written by: Narayana Vyas Kondreddi
-- Site: http://vyaskn.tripod.com
CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
SET NOCOUNT ON
DECLARE @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''') -- MODIFICA QUI PER CAMBIARE LE CONDIZIONI DEL LIKE
SET @ColumnName = ''
WHILE (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName
AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar') -- MODIFICA QUI PER CAMBIARE I TIPI DI COLONNA DA CONTROLLARE
AND COLUMN_NAME > @ColumnName
)
IF @ColumnName IS NOT NULL
BEGIN
INSERT INTO #Results
EXEC
(
'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
FROM ' + @TableName + ' (NOLOCK) ' +
' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
)
END
END
END
SELECT ColumnName, ColumnValue FROM #Results
Grazie anticipatamente
-
Dylan666
- Moderatore
-
- Post: 40100
- Iscritto il: 18/11/03 16:46
di archimede » 29/04/19 16:14
Non sono un esperto di quel db (suppongo SQL Server), ma mi pare ok.
Alessandro
-
archimede
- Moderatore
-
- Post: 2851
- Iscritto il: 07/11/02 12:41
- Località: Genova
-
Torna a Programmazione
Topic correlati a "SQL - Ricerca stringa in tutte le colonne di una tabella":
Chi c’è in linea
Visitano il forum: Nessuno e 4 ospiti