problemas con comillas simples y dobles en postgresql

3,149 views
Skip to first unread message

micky khan

unread,
Aug 10, 2016, 3:40:01 PM8/10/16
to publice...@googlegroups.com
Tengo que hacer un select y no le encuentro como...



hago esto ...

  select *  from v_ventas_totales where nombre_producto  like '%'6'0" SURF%'

ERROR:  error de sintaxis en o cerca de «6»

si hago lo normal sin comillas simples ni dobles no hay problema..
Las comillas simples y dobles son por las medidas y requieren hacer un select por el nombre...ya que hay varios con caracteristicas similares..

Como puedo resolverlo ??? 
Es para Postgresql

Gracias...


  <_>
 (o o)
 (  °  )
<>-<>
Micky Khan

Martin Paredes

unread,
Aug 10, 2016, 4:00:33 PM8/10/16
to Comunidad de Visual Foxpro en Español
colega, ahi te paso un ejemplo, espero y te sirva.

cbus="%"+ALLTRIM(UPPER(cbusca))+"%"
IF csqlexec(nconn, "SELECT * FROM mapasoft.vw_invearts_busca_compra_venta WHERE producto LIKE '"+cbus+"' ORDER BY producto;", "inveprec", ALLTRIM(PROGRAM())+[ LINEA : ]+ALLTRIM(STR(LINENO())))>0 THEN
   MESSAGEBOX('ok')
ELSE
   MESSAGEBOX('error')
ENDIF

Slds...
Mapasac

Luiz Alexandre Ruiz

unread,
Aug 10, 2016, 4:29:19 PM8/10/16
to Comunidad de Visual Foxpro en Español
Observe o que está em vermelho

select *  from v_ventas_totales where nombre_producto  like "%'6'0" + '"' + "SURF%"

Víctor Hugo Espínola Domínguez

unread,
Aug 10, 2016, 4:35:57 PM8/10/16
to publice...@googlegroups.com
Muestra el texto que quieres buscar.

Saludos,
Víctor.
Lambaré - Paraguay.

mpulla

unread,
Aug 10, 2016, 5:07:58 PM8/10/16
to Comunidad de Visual Foxpro en Español
Hola micky.

Lo mejor que puedes hacer es parametrizar

Private lcString As String 
lcString = [%'6'0" SURF%]

SqlExec(iHandle, [Select * From v_ventas_totales Where descripcion ILIKE ?lcString], [ItemRs])


Utiliza ILIKE para que no te distinga en mayúsculas y minúsculas.

En lo posible evita hacer Select *, solamente tráete la información necesaria.

Saludos.
Mauricio

micky khan

unread,
Aug 10, 2016, 6:15:35 PM8/10/16
to publice...@googlegroups.com
Gracias por vuestra ayuda...ninguna se acomodaba a lo que necesitaba...

Lo que hice fue :

kkkk= "select *  from v_ventas_totales where nombre_producto  like '%'6'0" SURF%' "

strtran(kkkk, " ' ", " '' " )

para una comilla simple tiene que tener otro...


gracias por todo...

MK

--

Víctor Hugo Espínola Domínguez

unread,
Aug 10, 2016, 6:59:37 PM8/10/16
to publice...@googlegroups.com
Eso es muy raro

1) kkkk= "select *  from v_ventas_totales where nombre_producto  like '%'6'0" SURF%' " tiene error de sintaxis

2) La solución propuesta por Mauricio es la mejor y debe funcionar

Aún no sabemos la cadena que quieres buscar!!

Cuando se consulta en un foro se supone que no conoces la solución o la que estás probando no funciona, por lo tanto no debes preguntar "porqué esto no funciona?", lo que debes preguntar es "cómo resuelvo este problema?" y debes explicar el problema claramente, en este caso no dijiste lo que estabas buscando!

Saludos,
Víctor.
Lambaré - Paraguay.


El 10 de agosto de 2016, 18:15, micky khan<mcan...@gmail.com> escribió:
Gracias por vuestra ayuda...ninguna se acomodaba a lo que necesitaba...

Lo que hice fue :

kkkk= "select *  from v_ventas_totales where nombre_producto  like '%'6'0" SURF%' "

strtran(kkkk, " ' ", " '' " )

para una comilla simple tiene que tener otro...


gracias por todo...

MK

micky khan

unread,
Aug 10, 2016, 7:26:55 PM8/10/16
to publice...@googlegroups.com
La solución consiste en que si la cadena contiene una comilla simple este debe de estar par...

Víctor Hugo Espínola Domínguez

unread,
Aug 10, 2016, 7:37:30 PM8/10/16
to publice...@googlegroups.com
Esa es una media verdad o media mentira, solo se aplica cuando escribes literales que serán enviados al servidor, cuando el dato a comparar está en una variable no se aplica esa regla.

Aún no sabemos lo que quieres buscar!

Saludos,
Víctor.
Lambaré - Paraguay.


mpulla

unread,
Aug 10, 2016, 8:05:01 PM8/10/16
to Comunidad de Visual Foxpro en Español
Hola micky

Parametrizando evitas la inyección de código sql además no tienes que estar concatenando ni transformando valores.

Puedes decir que fallo?

Saludos.
Mauricio

HernanCano

unread,
Aug 11, 2016, 12:46:53 AM8/11/16
to Comunidad de Visual Foxpro en Español
Amigos:
maiky parece que cerró el hilo:

>>> gracias por todo...

Aunque la ((supuesta)) solución es errónea (estoy de acuerdo con Víctor).....

>>> kkkk= "select *  from v_ventas_totales where nombre_producto  like '%'6'0" SURF%' "
>>> strtran(kkkk, " ' ", " '' " )

Pero él cerró.....

Edwin Duran

unread,
Aug 12, 2016, 7:49:58 AM8/12/16
to Comunidad de Visual Foxpro en Español
Buen dia

Para solucionar ese tema Alltrim(Strtran(Thisform.txtcod_item.Value,"'","") en el textbox escribo lo que deseo utilizando los símbolo  %%, es decir que el usuario tenga que agregar según lo que quiera buscar, ademas utilizo esto antes de guardar para evitar ese error

Saludos
Edwin Duran
República Dominicana
Reply all
Reply to author
Forward
0 new messages