sql - SQL Server 中的参数传递问题
问题描述
我在 T-SQL 中编写了一个函数,它应该采用字符串值并在“Course Taken”列中返回具有相似值的任何行。这是功能:
enter code here
USE [alumni_project1]
GO
/****** Object: UserDefinedFunction [dbo].[Course_Search] Script Date: 24-Mar-21 7:45:04 PM
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[Course_Search]
(
@course varchar(255)
)
RETURNS TABLE
AS
RETURN
SELECT *
FROM Alumni
WHERE Course_taken like '%@course%';
但是,当我尝试使用该功能时,它不会产生任何结果。这就是我调用函数的方式:
DECLARE @c VARCHAR(255)
SET @c = 'comp'
SELECT * FROM dbo.Course_Search(@c)
注意:如果我使用常规 SELECT 语句,它会返回正确的输出,即 Course_taken= 'Computer Science' 的两行。如何解决这个问题?
解决方案
'%@course%'
没有做你认为的那样。它正在寻找包含文字字符串 '@course'
而不是参数中的值的行@course
。SQL 不是脚本语言,它不会将参数/变量的值注入到文字中。
您需要连接'%'
参数的任一侧:
CREATE FUNCTION [dbo].[Course_Search] (@course varchar(255))
RETURNS TABLE AS
RETURN
SELECT *
FROM Alumni
WHERE Course_taken LIKE '%' + @course + '%';
推荐阅读
- mysql - 用于 wordpress 的 MySQL 查询:每个类别至少 100 个帖子 - 删除其余帖子
- database - SQLITE3 Python编程学习
- python-3.x - Keithley2400_IV Sweep_VIA RS232 - 我想增加 ':FETCh?' 的大小?
- python - sklearn:多类问题和报告敏感性和特异性
- android - 如何防止数字受到 rtl 编辑的影响?
- python - 在函数内创建文件对象,将其返回给父函数并在那里关闭它是否有问题?
- azure - Key Vault ipRules 属性作为参数问题
- jquery - reactjs中的单选按钮onclick事件
- vim - 如何将 ctags 配置为自动创建隐藏的 .tags 文件而不是标签文件?
- python - 如何使用python将xml整个元素、属性和数据复制到具有特定ID的新xml文件中