我试图转义红宝石字符串中的单引号。我使用这个字符串作为插入查询将数据推送到 postgresql 中。
将生成的查询如下所示:-
str = insert into table field1,field2 values 'Gaurav's', 'Scooter'
我试着用
str.gsub("/'/",\\\\')
但这没有用。
我总是得到的错误是: Syntax Error Near s:
我想我需要一个正则表达式来转义两个单引号内的单引号,但不确定。
我该如何解决?谢谢你。
我试图转义红宝石字符串中的单引号。我使用这个字符串作为插入查询将数据推送到 postgresql 中。
将生成的查询如下所示:-
str = insert into table field1,field2 values 'Gaurav's', 'Scooter'
我试着用
str.gsub("/'/",\\\\')
但这没有用。
我总是得到的错误是: Syntax Error Near s:
我想我需要一个正则表达式来转义两个单引号内的单引号,但不确定。
我该如何解决?谢谢你。
您应该使用准备好的语句。准备好的语句有助于提高您的速度。查询由数据库解析一次。它们还可以帮助您避免在尝试时进行手动转义。
f1_val = "Gaurav's"
f2_val = "Scooter"
# conn is your connection object
conn.prepare('givethisqueryaname', "INSERT INTO table field1,field2 VALUES ($1,$2)")
conn.exec_prepared('givethisqueryaname',[f1_val, f2_val])
如果给定字段名称和字段值作为字符串,则可以执行此操作。
fieldStr = "field1,field2"
valuesStr = "Gaurav's, Scooter"
arr = valuesStr.split(",")
conn.prepare('insert_x', "INSERT INTO table #{fieldStr} VALUES ($1,$2)")
conn.exec_prepared('insert_x', arr)
如果您要转义的单引号始终位于“s”前面,则此方法有效
1.9.3p125 :020 > str = "insert into table field1,field2 values 'Gaurav's', 'Scooter'"
=> "insert into table field1,field2 values 'Gaurav's', 'Scooter'"
1.9.3p125 :021 > str.gsub("'s","-s")
=> "insert into table field1,field2 values 'Gaurav-s', 'Scooter'"
您可以使用单引号(')和双引号(“)之间的区别。