【问题标题】:Wildcard as parameter of stored procedure通配符作为存储过程的参数
【发布时间】:2014-03-02 10:40:49
【问题描述】:

假设,我有一个存储过程,它接受一个参数 - id,并返回一些与这个 id 对应的数据。如果我想检索所有这些数据,比如在 SELECT 查询中使用通配符怎么办?这该怎么做?

【问题讨论】:

    标签: sql stored-procedures interbase select-query


    【解决方案1】:

    您可以在查询中添加尾随“%”。假设@param 是存储过程的参数:

    declare @param2 varchar(100)
    set @param2 = @param + '%'
    
    select * from table where column like @param2
    

    这将返回以@param 中的值开头的通配符搜索。对于部分匹配使用'%' + @param + '%'

    [编辑]

    基于 cmets 中的以下说明:

    if @id != '*' 
    begin
        select * from table where column = @id
    end
    else
    begin
        select * from table
    end
    

    【讨论】:

    • 您的答案仅与文本参数有关。如果传递的参数是整数(例如,主键)怎么办?
    • 我以为你是这个意思:) 你的意思是如果搜索参数是 1,你想返回所有的主键,包括 1、11、112 等等?
    • 我的意思是,如果我想要 id = 1 的行,我传递 1 作为参数,2 -> 2 作为参数,但是如果我想要所有现有的行呢?
    • 谢谢。我通过 if-else 语句做了这件事,但我想是否有更优雅的方式来做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    相关资源
    最近更新 更多