Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] no sé utilizar MID

Estas en el tema de no sé utilizar MID en el foro de Mysql en Foros del Web. Hola, no se usar MID, hace unos minutos descubrí esa función pero despues de mucho buscar no estoy consiguiendo hacer que funcione. Esto es lo ...
  #1 (permalink)  
Antiguo 22/07/2013, 12:02
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 2 meses
Puntos: 1
no sé utilizar MID

Hola, no se usar MID, hace unos minutos descubrí esa función pero despues de mucho buscar no estoy consiguiendo hacer que funcione.

Esto es lo que tengo:

Código SQL:
Ver original
  1. SELECT idnoticia MID(contenido,1,10)
  2. FROM noticias ORDER BY idnoticia DESC LIMIT 6

O sea quiero selecionar los primeros 10 caracteres del campo contenido.
Buscando también descubri que puedo hacerlo con SUBSTRING y SUBSTR pero tampoco me funciona. Realmente no entiendo como usar eso. Alguien puede guiarme?

PD: estoy haciendo la consulta desde un archivo PHP y estoy usando variables pero pongo este tema en mySql porque se trata de mySql..

Última edición por gnzsoloyo; 22/07/2013 a las 12:06 Razón: Código de programacion no permitido en foros de BBDD.
  #2 (permalink)  
Antiguo 22/07/2013, 12:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: no sé utilizar MID

Manual de referencia:
Cita:
MID(str,pos,len)
MID(str,pos,len) es sinónimo de SUBSTRING(str,pos,len).
En cuanto a SUBSTRING, que ya conoces, lo que dice el refman es:
Cita:
SUBSTRING(str,pos) , SUBSTRING(str FROM pos), SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)

Las formas sin el arguemnto len retornan una subcadena de la cadena str comenzando en la posición pos. Las formas con el argumento len retornan una subcadena de longitud len a partir de la cadena str, comenzando en la posición pos.Las formas que usan FROM son sintaxis SQL estándard. En MySQL 5.0, es posible usar valores negativos para pos. En este caso, el inicio de la subcadena son pos caracteres a partir del final de la cadena, en lugar del principio. Un valor negativo puede usarse para pos en cualquier de las formas de esta función.
Código MySQL:
Ver original
  1. mysql> SELECT SUBSTRING('Quadratically',5);
  2.         -> 'ratically'
  3. mysql> SELECT SUBSTRING('foobarbar' FROM 4);
  4.         -> 'barbar'
  5. mysql> SELECT SUBSTRING('Quadratically',5,6);
  6.         -> 'ratica'        
  7. mysql> SELECT SUBSTRING('Sakila', -3);
  8.         -> 'ila'        
  9. mysql> SELECT SUBSTRING('Sakila', -5, 3);
  10.         -> 'aki'
  11. mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);
  12.         -> 'ki'

Esta función trabaja con múltiples bytes.

Tenga en cuenta que si usa un valor menor a 1 para len, el resultado siempre es una cadena vacía.

SUBSTR() es sinónimo de SUBSTRING().
En referencia a PHP, no es tema de este foro. Usar MySQL no implica usar PHP. SOn cosas independientes (podrías usar PHP con Oracle, si quieres, y serviría).
Pero si la consulta se ejecuta correctamente, lo que es probable que suceda es que no estás leyendo bien el resultado (eso es off topic acá), por lo que mi sugerencia es que pruebes manualmente en phpMyadmin la consulta. Si funciona, el problema es tu código de PHP, y eso lo debes verificar en el foro correspondiente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/07/2013, 12:12
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: no sé utilizar MID

Hola mathiasmontiel:

La consulta, tal como la pones debería marcarte un error... pero ¿qué error es el que te está marcando?... sin esta información estamos jugando al adivino...

no nos dices cuál es la estructura de tu tabla, pero puedo suponer que idnoticia y
contenido son dos campos distintos, por lo tanto, si quieres seleccionar ambos, DEBES COLOCAR UNA COMA ANTES DEL MID;

Código:
SELECT idnoticia, MID(contenido,1,10)...
Tal como leíste, lo que quieres hacer los puedes hacer con MID, SUBSTRING, SUBSTR y también con LEFT... todas estas funciones trabajan de manera semejante:


Código MySQL:
Ver original
  1. mysql> SELECT MID("esto es una prueba", 1, 10);
  2. +----------------------------------+
  3. | MID("esto es una prueba", 1, 10) |
  4. +----------------------------------+
  5. | esto es un                       |
  6. +----------------------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT SUBSTRING("esto es una prueba", 1, 10);
  10. +----------------------------------------+
  11. | SUBSTRING("esto es una prueba", 1, 10) |
  12. +----------------------------------------+
  13. | esto es un                             |
  14. +----------------------------------------+
  15. 1 row in set (0.05 sec)
  16.  
  17. mysql> SELECT SUBSTR("esto es una prueba", 1, 10);
  18. +-------------------------------------+
  19. | SUBSTR("esto es una prueba", 1, 10) |
  20. +-------------------------------------+
  21. | esto es un                          |
  22. +-------------------------------------+
  23. 1 row in set (0.00 sec)
  24.  
  25. mysql> SELECT LEFT("esto es una prueba", 10);
  26. +--------------------------------+
  27. | LEFT("esto es una prueba", 10) |
  28. +--------------------------------+
  29. | esto es un                     |
  30. +--------------------------------+
  31. 1 row in set (0.02 sec)

Aquí el problema definitivamente eres tú, que no pones un poco de atención en los que estás probando

Saludos
Leo.

Etiquetas: campo, php, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:14.