>Ciao a tutti,
Ciao
>In una tabella di un db SqlServer 2008 Express che ha una colonna
>di tipo int perchè se nella query scrivo LIKE '%' non dà errori
>mentre se passo il valore % ad un parametro mi dice "Cast non
>valido dalla stringa "%" al tipo 'Integer'."?
A prescindere dal fatto che like sui numerici non ha senso (va al massimo castato prima di effettuare una ricerca in LIKE), ho provato uno script:
USE tempdb;
GO
CREATE TABLE #foo (valore tinyint)
GO
INSERT INTO #foo (valore) VALUES (10)
INSERT INTO #foo (valore) VALUES (20)
INSERT INTO #foo (valore) VALUES (25)
INSERT INTO #foo (valore) VALUES (30)
INSERT INTO #foo (valore) VALUES (35)
GO
DECLARE @param char(1) = '%'
-- FUNZIONA
SELECT * FROM #foo WHERE valore LIKE '%';
SELECT * FROM #foo WHERE valore LIKE @param;
-- ERRORE
SET @param = '1'
SELECT * FROM #foo WHERE valore + '%' LIKE @param;
DROP TABLE #foo;
GO
ovviamente quando concateno il carattere % al campo di tipo numerico si arrabbia, negli altri casi sembra andare..
>Grazie dell'attenzione.
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi