我已经用谷歌搜索了这个人真的很惊讶没有找到一个现成的解决方案,因为我认为这是一个从表格更新数据库的人所面临的问题。
问题是在文本字段中用作撇号和其他实例的单引号。
所以我需要找到在将它发送到数据库之前在Javascript / Nodejs中的SQL语句中替换所有出现的单引号,这当然不是硬编码语句,每次都会有所不同,但是以下内容包括sql语句中的回车以及等号前后的空格,以及没有空格来尝试捕获所有出现的内容。
关键是“=”后跟一个语音标记,要抓取的文本和关闭单个语音标记后跟空格,逗号或单词“WHERE”。
我不是正则表达式的专家,但是我想出了这个,它只能正确地提取几个字符串:
/\= *'(.*)' *[, *]/g
希望得到任何正则表达式专家的帮助: - )
update XXX set status = 'Pending's' where xx = 'xxx'
UPDATE XX_XXX
SET
SUBJECT='Test of system's', SERIAL_NUMBER='SN'1'23', SPEC='Verify order's package is complete',
DESCRIPTION='13.3/8'' Buttress Pin's ' WHERE ID='1002-15'
这应该是结果:
update XXX set status = 'Pending''s' where xx = 'xxx'
UPDATE XX_XXX
SET
SUBJECT='Test of system''s', SERIAL_NUMBER='SN''1''23', SPEC='Verify order''s package is complete',
DESCRIPTION='13.3/8''' Buttress Pin''s ' WHERE ID='1002-15'
这些是需要选择的字符串:
Pending's
Test of system's
SN'1'23
Verify order's package is complete
13.3/8'
1002-15
答案 0 :(得分:-1)
这是很常见的问题,不需要正则表达式。只需简单地替换字符串中的单引号即可将单引号加倍。
这是一个例子。只需看到评论
--This is double quote I used, because ally's wonderland not work at here.
DECLARE @StringValueWithSingleQuote varchar( 50) = 'Ally''s wonderland'
-- just see the magid, replace double single quote to single quote while displaing
select @StringValueWithSingleQuote
--This is actual you have to do
select REPLACE( @StringValueWithSingleQuote , char(39) , Char(39)+Char(39) )