usa tutorial sobre que para instalar index funciona elastic crear como comandos sql-server sql-server-2005 tsql

sql-server - tutorial - todo sobre elasticsearch



Cláusula WHERE en el tipo de datos "Texto" de SQL Server (7)

Eso no es lo que dice el mensaje de error. Dice que no puedes usar el operador = . Pruebe por ejemplo LIKE ''foo'' .

Donde [CastleType] se establece como tipo de datos "texto" en SQL Server y la consulta es:

SELECT * FROM [Village] WHERE [CastleType] = ''foo''

Me sale el error:

Los tipos de datos TEXT y VARCHAR son incompatibles en el operador equal.

¿No puedo consultar este tipo de datos con una cláusula WHERE?


Estoy usando MySQL y esta consulta funciona para mí:

SELECT * FROM @Village WHERE CastleType LIKE ''%foo%'';


No puede comparar contra el text con el operador = , sino que debe usar una de las funciones de comparación que se enumeran here . También tenga en cuenta el gran cuadro de advertencia en la parte superior de la página, es importante.


Otra opción sería:

SELECT * FROM [Village] WHERE PATINDEX(''foo'', [CastleType]) <> 0


Por favor, intente esto

SELECT * FROM [Village] WHERE CONVERT(VARCHAR, CastleType) = ''foo''


Puede usar LIKE lugar de = . Sin ningún comodín, esto tendrá el mismo efecto.

DECLARE @Village TABLE (CastleType TEXT) INSERT INTO @Village VALUES ( ''foo'' ) SELECT * FROM @Village WHERE [CastleType] LIKE ''foo''

text está en desuso Cambiar a varchar(max) será más fácil de usar.

¿Cuán grande es la probabilidad de que los datos sean? Si va a hacer comparaciones de igualdad, idealmente querrá indexar esta columna. Esto no es posible si declara la columna como algo más amplio que 900 bytes, aunque puede agregar una checksum calculada o columna hash que se puede usar para acelerar este tipo de consulta.


Si no puede cambiar el tipo de datos en la tabla para usar varchar (max), cambie su consulta a este:

SELECT * FROM [Village] WHERE CONVERT(VARCHAR(MAX), [CastleType]) = ''foo''