¿Ha utilizado SET TEXTSIZE
para limitar los datos devueltos por una consulta, pero descubrió que simplemente no parece funcionar? Está descubriendo que su SELECT
las consultas continúan devolviendo la cantidad total de texto, independientemente del TEXTSIZE
valor?
sigue leyendo Podrías estar cometiendo este error obvio.
Cuando me encontré por primera vez con TEXTSIZE
opción, decidí hacer una prueba rápida. Pero no funcionó. Probé varias veces con varios TEXTSIZE
valores, pero nada parecía funcionar.
"¿Por qué no está funcionando?" Me preguntaba.
Pero luego hizo clic. Volví a leer la documentación y me di cuenta de que no estaba usando el tamaño de cadena correcto para mis tipos de datos.
El TEXTSIZE
solo funciona con los siguientes tipos de datos:
- varchar(máximo)
- nvarchar(máximo)
- varbinario(máximo)
- texto
- ntext
- imagen
Si observa los primeros tres, observe que usan max
para el argumento. Esto significa que utilizan el tamaño máximo de cadena/almacenamiento.
Lo estaba probando contra columnas de tipo nvarchar(100) ,
Ejemplo
Aquí hay un ejemplo para demostrar lo que quiero decir.
USE Test; DROP TABLE IF EXISTS TextSizeTest; CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTest VALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' ); SET TEXTSIZE 4; SELECT * FROM TextSizeTest;
Resultado:
+-------------+--------------+---------------+ | varchar50 | varcharMax | nvarcharMax | |-------------+--------------+---------------| | Dragonfruit | Drag | Dr | +-------------+--------------+---------------+
Aquí, configuro el TEXTSIZE
valor a 4
, pero el texto completo del varchar(50)
la columna permanece intacta. Esta columna no se ve afectada por SET TEXTSIZE
. Y así es exactamente como se supone que debe funcionar.
Solo las otras dos columnas se ven afectadas, porque son varchar(max)
y nvarchar(max)
respectivamente.
Además, la razón por la que nvarchar la columna es más corta que varchar es porque usa dos bytes para cada carácter (en comparación con varchar es un byte por carácter).
Entonces, si tiene problemas con SET TEXTSIZE
, comprueba tu tipo de datos.