【问题标题】:search string and insert value in table搜索字符串并在表中插入值
【发布时间】:2020-02-16 11:06:21
【问题描述】:

我的表格有以下记录。以下产品描述由用户在文本框中给出 前端(asp.net)。产品描述会带有单引号或双引号。我想插入表格中。那么如何检查是否存在单引号或双引号 表格中的输入和插入值。请帮忙。

String s=教科书

CREATE TABLE Product_Details(Product_Description varchar(50))

    Required Output

    Product_Description
    -------------------
    STORE('COVERED)
    STEEL("ROOFED)

以上两个字符串的插入语句会不同吗?

【问题讨论】:

    标签: postgresql insert postgresql-9.2


    【解决方案1】:

    我不确定您到底在寻找什么。您应该能够毫无问题地存储带引号或双引号的文本(注意,我在 Postgresql 9.4 上进行测试,没有 9.2)。 问题有时是用单引号创建文本。在这些情况下,通常有两个单引号,例如 insert into product_details values ('STORE(''COVERED)') 双引号 (") 应该不是问题。您可以使用语法 E'STORE(\'COVERED)' 代替两个引号。有时更具可读性。

    如果你只是想检查输入中是否有'或“”,这个检查很方便:

    select length(replace(product_description,'''',''))!=length(product_description),   
    length(replace(product_description,'"',''))!=length(product_description)
    

    它返回真/假列,告诉第一列的字符串中是否存在单引号,后一列中是否存在双引号。

    要删除字符串中的引号,您可以这样做:
    select replace(replace(product_description,'"',''),'''','')

    最好的问候,
    比亚尼

    【讨论】:

    • 不要用字符串连接构建你的SQL语句,确保你绑定了变量。这样,单引号或双引号或它们的任何组合只会成为 SQL 引擎使用的值,而不是语句的一部分。 (也可以防止 SQL 注入。)另外,语句没有区别,实际上它是相同的语句。每日提示:升级您的 Postgers 版本支持/更新,即使是针对安全漏洞,因为它已于 2017 年 11 月结束。
    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多