SQL Server - Busqueda en un campo text

 
Vista:

Busqueda en un campo text

Publicado por Pedro (7 intervenciones) el 04/11/2007 22:58:43
Hola forista, expertos y conocedores.

Que tal deseo hacer una consulta de sus conocimientos, ya que no se mucho y desseo una orientacion.
Tengo tabla con un campo observaciones de tipo Text, desseo hacer una busqueda en ese campo : es decir por ejemplo si contiene el numero de factura 100-00015324 de ser asi, me muestre que registros son los que contiene ese numero de factura, ojo no puedo cambiar ese campo a varchar debido a que no soy administrador y solo me permiten leerlo,
otra cosa no use index por que no se puede hacer en este tipo de campos(tipo text), seria facil con un like verdad? pero al ser una tabla de gran cantidad de registros hace lenta la busqueda, ya que uso powerbuilder para mostrar esos datos,

Cual seria la solucion?? y como para no ser lenta la busqueda o que otra opciones tengo?

Agradecere su colaboracion gracias saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Busqueda en un campo text

Publicado por Isaias (3308 intervenciones) el 05/11/2007 19:00:59
Los campos tipo TEXT, son especiales en su manejo y trato, no son campos comunes, por principio de cuentas, estan diseñados para almacenar una gran cantidad de datos, por lo que lo hacen de forma binaria

ntext

Datos Unicode de longitud variable con una longitud máxima de 230 - 1 (1.073.741.823) caracteres. El tamaño del almacenamiento, en bytes, es dos veces el número de caracteres especificado. El sinónimo en SQL-92 para ntext es national text.

text

Datos no Unicode de longitud variable, de la página de códigos del servidor y con una longitud máxima de 231-1 (2.147.483.647) caracteres. Cuando la página de códigos del servidor utiliza caracteres de doble byte, el almacenamiento sigue siendo de 2.147.483.647 bytes. Dependiendo de la cadena de caracteres, el espacio de almacenamiento puede ser inferior a 2.147.483.647 bytes.

En cuanto al manejo de lo almacenado, solo se pueden acceder po:

READTEXT

En este ejemplo se lee desde el carácter dos al veintiséis de la columna pr_info en la tabla pub_info.

USE pubs
GO
DECLARE @ptrval varbinary(16)
SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr INNER JOIN publishers p
ON pr.pub_id = p.pub_id
AND p.pub_name = 'New Moon Books'
READTEXT pub_info.pr_info @ptrval 1 25
GO

¿Se justifica que uses tipo TEXT para almacenar tus datos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda en un campo text

Publicado por Pedro (7 intervenciones) el 05/11/2007 21:00:56
Hola Isaias

Justificad creo que si, por lo que se almacena mas de mil caracteres en ciertas ocaciones, ademas cuando deseo mostrar en una aplicacion solo me muestra todos los campos cuando es text, por que cuando es varchar solo me nuestra 250 igual pasa cuando quiero actualizar ese campo.

siguiente tu consejo cual seria la forma especial de realizar una busqueda en ese campo de cierto criterio ( osea que contenga por decir la palabra 'formulario') ya que hay una gran cantidad de registros o existe o tra forma para realizar una busqueda rapida y optima.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda en un campo text

Publicado por Isaias (3308 intervenciones) el 05/11/2007 21:17:16
Pedro

Si la informacion es menor a 8,000 caracteres, te convendria utilizar VARCHAR(n).

varchar[(n)]

Datos de caracteres no Unicode de longitud variable con una longitud de n bytes. n tiene que ser un valor comprendido entre 1 y 8.000

¿Que te muestra solo 250 caracteres?, Donde lo estas mostrando, en alguna grilla?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda en un campo text

Publicado por Pedro (7 intervenciones) el 05/11/2007 22:38:13
Buena observacion Isaias

pero tengo el problema de que yo solo tengo acceso de lectura de esa tabla asi es que no puedo modificarla, ya que esta estructura por el area de informatica, se que seria mejor trabajar con varchar y de ahi usar indices pero como te digo no tengo privilegios para realizar dicho cambio.

una consulta podria hacer que cada vez que se registre una fila pero inserte automaticamente a otra que yo haya creado? si es asi como realizo dicha funcion, con procedimientos?? pero como.

agradecere tu paciencia en esta duda

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda en un campo text

Publicado por Isaias (3308 intervenciones) el 06/11/2007 01:30:22
Puedes hacerlo, utilizando TRIGGER, pero el problema en si, es el tratamiento de los campos tipo TEXT.

Ahi esta todo el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda en un campo text

Publicado por Pedro (7 intervenciones) el 06/11/2007 22:35:47
Hola Isaias,
bueno si tienes razon,pero es que no encuentro otra solucion para el tratamiento del campo Text, por que ya te manifeste que no puedo modificar esa tabla claro puedo crear otra pero no modificar las hecha por el propietario de dicha base. bueno espero encontrar la solucion gracias, algunas dudas han sido cubiertas y veo constantemente que tu aportacion ayuda a varios
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Busqueda en un campo text

Publicado por Isaias (3308 intervenciones) el 06/11/2007 23:40:40
De nada Pedro, espero que tengas suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar