You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL存储过程中通过合并生成的EmployeeFullName列用@name参数搜索?

创建带姓名搜索功能的SQL存储过程示例

没问题,我来帮你搞定这个存储过程!下面分两种常见场景给你具体的实现方案,你可以根据自己的实际情况选择:

场景1:EmployeeFullName是查询时动态合并的(表中无此列)

如果你的EmployeeFullName是每次查询时通过合并forename和surname生成的,而非表中已有的列,那可以用下面的存储过程:

CREATE PROCEDURE SearchEmployeeByName
    @name NVARCHAR(100)  -- 输入参数,接收要搜索的姓名内容
AS
BEGIN
    SET NOCOUNT ON;  -- 关闭额外的行数统计返回,让结果更干净

    -- 动态合并姓名并执行搜索,这里用LIKE实现模糊匹配
    SELECT 
        forename,
        surname,
        CONCAT(forename, ' ', surname) AS EmployeeFullName
    FROM 
        YourEmployeeTable  -- 替换成你的实际员工表名
    WHERE 
        CONCAT(forename, ' ', surname) LIKE '%' + @name + '%'
        -- 如果需要更严格的匹配(比如避免部分字符重叠),可以改成:
        -- CONCAT(' ', forename, ' ', surname, ' ') LIKE '% ' + @name + ' %'
END

说明:

  • 使用CONCAT函数可以安全地处理NULL值(如果某列是NULL,合并后不会导致整个结果为NULL)
  • 用LIKE '%' + @name + '%'可以匹配姓名中任意包含@name的情况,如果你需要精确匹配,直接改成= @name即可

场景2:EmployeeFullName是表中已存在的列(比如计算列)

如果你的表已经预先定义了EmployeeFullName列(比如是持久化的计算列,或者已经批量生成好了),那存储过程会更简洁:

CREATE PROCEDURE SearchEmployeeByName
    @name NVARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        forename,
        surname,
        EmployeeFullName
    FROM 
        YourEmployeeTable
    WHERE 
        EmployeeFullName LIKE '%' + @name + '%'
        -- 精确匹配的话替换成:EmployeeFullName = @name
END

额外提示:

  • 记得把YourEmployeeTable替换成你实际使用的员工表名称
  • 参数类型建议用NVARCHAR,这样能更好地支持包含中文、特殊字符的姓名
  • 如果你的员工数据量很大,模糊搜索LIKE '%xxx%'可能会影响性能,这种情况可以考虑给EmployeeFullName创建全文索引,或者调整搜索逻辑为匹配开头(LIKE @name + '%')来利用普通索引

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:43:48