limite length column capacidad sql sql-server tsql

sql - length - Límite en la condición WHERE col IN(...)



sql server database size limit (6)

Estoy usando el siguiente código:

SELECT * FROM table WHERE Col IN (123,123,222,....)

Sin embargo, si pongo más de ~ 3000 números en la cláusula IN , SQL arroja un error.

¿Alguien sabe si hay un límite de tamaño o algo similar?


¿Por qué no hacer un where IN en una sub selección?

Pre-consulta en una tabla temporal o algo ...

CREATE TABLE SomeTempTable AS SELECT YourColumn FROM SomeTable WHERE UserPickedMultipleRecordsFromSomeListOrSomething

entonces...

SELECT * FROM OtherTable WHERE YourColumn IN ( SELECT YourColumn FROM SomeTempTable )



Hay un límite, pero puedes dividir tus valores en bloques separados de in ()

Select * From table Where Col IN (123,123,222,....) or Col IN (456,878,888,....)


Lo estas haciendo mal.

Parametrice su consulta y pase los identificadores usando un parámetro de valor de tabla .

Por ejemplo, podría definir el siguiente tipo

CREATE TYPE IdTable AS TABLE (Id INT NOT NULL PRIMARY KEY)

Y tenga el siguiente procedimiento almacenado

CREATE PROCEDURE sp__Procedure_Name @OrderIDs IdTable READONLY, AS SELECT * FROM table WHERE Col IN (SELECT Id FROM @OrderIDs)


Puede usar tuplas como esta: SELECCIONAR * FROM table WHERE (Col, 1) IN ((123,1), (123,1), (222,1), ....)

No hay restricciones en el número de estos. Compara pares.


Según el motor de base de datos que esté utilizando, puede haber límites en la duración de una instrucción.

SQL Server tiene un límite muy grande:

http://msdn.microsoft.com/en-us/library/ms143432.aspx

ORACLE tiene un límite muy fácil de alcanzar en el otro lado.

Entonces, para las cláusulas IN grandes, es mejor crear una tabla temporal, insertar los valores y hacer un JOIN. Funciona más rápido también.