sql >> Databasteknik >  >> RDS >> Mysql

Ersätt escaped dubbla citattecken med dubbla citattecken i R

Jag ser två problem med det du inkluderade i din fråga. Den första ser ut som ett stavfel. Efter:

html <- "<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>"   

Du har:

query <- c('INSERT INTO table (htmlfield) VALUES (\"', html, '"')
                                                  ^^^^^^^^^^^^^^^

Lägg märke till att du slipper en sträng men inte den andra. Du behöver inte fly från dem, men det spelar ingen roll om du gör det. Du menade också '")' för den sista strängen som jag misstänker är den verkliga källan till felet du får. klistra in istället för c är mer användbar här. Om jag kombinerar dessa får vi:

query <- paste('INSERT INTO table (htmlfield) VALUES ("', html, '")', sep = "")

som vi kan använda direkt:

dbSendQuery(con, query)

Det andra problemet, och ett som många människor gör, är att blanda ihop den tryckta representationen av ett objekt med själva objektet. Om vi ​​skriver ut fråga , vi ser detta:

> query
[1] "INSERT INTO table (htmlfield) VALUES (\"<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>\")"

Den utskrivna representationen av strängen är alltid innesluten i "" dubbla citattecken, och som sådan den interna " måste fly. Det du vill titta på är själva strängen. Vi kan göra det med cat eller writeLines - Jag föredrar det senare eftersom det lägger till "\n" till slutet av strängen automagiskt:

> writeLines(query)
INSERT INTO table (htmlfield) VALUES ("<div style='text-align: center; font-family: Arial;'><span style='font-size: 14pt;'>Some text without any tricky symbols.</span></div>")

Lägg märke till hur " är nu inte rymde. Det är den SQL som skulle köras av databasservern. Om det är giltig SQL för din DB kommer det att fungera.



  1. Problem med UTF-8-tecken; det jag ser är inte det jag har lagrat

  2. Hur OCT() fungerar i MariaDB

  3. ST_Buffermotsvarighet för cirkelbaserade sökningar i MySQL?

  4. Hur sätter man text framför autoinkrementfältet i mysql (som:TTT00001)?