Sql 如何使用带撇号的品牌名称

Sql 如何使用带撇号的品牌名称,sql,sql-server,Sql,Sql Server,我有一个名为Shops的表,我想只使用字段值“Romford”和“St.John's Road”在列名Shopname上筛选它。当城市名称之一包含撇号时,如何编写where子句。 请帮忙。 提前谢谢 您需要将字符串中的单引号加倍。所以你会写: where shopname = 'St. John''s Road' 你可以: 你需要通过加倍来避免你的单一报价。因此: WHERE Shopname = 'St.John''s Road' 但是,如果该值来自应用程序,那么您将对查询进行适当的参数化

我有一个名为Shops的表,我想只使用字段值“Romford”和“St.John's Road”在列名Shopname上筛选它。当城市名称之一包含撇号时,如何编写where子句。 请帮忙。
提前谢谢

您需要将字符串中的单引号加倍。所以你会写:

where shopname = 'St. John''s Road'
你可以:


你需要通过加倍来避免你的单一报价。因此:

WHERE Shopname = 'St.John''s Road'
但是,如果该值来自应用程序,那么您将对查询进行适当的参数化,并且不需要转义变量值。因此,值为St.John's Road的变量@ShopName将在以下情况下正常工作:

WHERE ShopName = @ShopName

如果来自应用程序代码且查询尚未参数化,则将其更改为参数化查询将解决此问题并提供其他好处,包括更好的安全性,消除了封闭文本或不依赖于类型的需要,消除了在字符串中转义引号的需要,避免以特定方式格式化日期字符串文本,不需要小数分隔符,通过促进执行计划缓存重用来提高性能,并使代码更干净,更易于维护。
WHERE ShopName = @ShopName