mysql - sql server 中的内联表值函数不返回数据

标签 mysql sql-server

我创建了一个名为 [EMPLOYEE_DATEOFBIRTH] 的表

CREATE TABLE EMPLOYEE_DATEOFBIRTH  (ID int primary key not null, 
NAME nvarchar(20) not null,
DATE_OF_BIRTH DATETIME2(7) not null, 
GENDER nvarchar(10) not null,
DEP_ID int not null)

并将数据插入到该表中。

INSERT INTO EMPLOYEE_DATEOFBIRTH  (ID, NAME, DATE_OF_BIRTH,GENDER,DEP_ID) VALUES (1,'Jack','1980-12-30 00:00:00.000','MALE',1)

INSERT INTO EMPLOYEE_DATEOFBIRTH (ID, NAME, DATE_OF_BIRTH,GENDER,DEP_ID) VALUES (2,'Ann','1982-09-01 12:02:36.260','FEMALE',2)

然后我创建了一个函数,该函数按性别返回员工列表

CREATE FUNCTION fnEmployeeByGender (@Gender nvarchar)
RETURNS TABLE
AS 
RETURN 
        (SELECT ID, NAME, DATE_OF_BIRTH,GENDER,DEP_ID 
        FROM EMPLOYEE_DATEOFBIRTH
        WHERE GENDER=@Gender)

为了执行此函数,我使用查询,但它不返回任何内容

SELECT * FROM fnEmployeeByGender('MALE')

这可能是什么原因?提前致谢。

最佳答案

您的错误在这里:@Gender nvarchar。如果您没有指定 nvarchar 的长度,则它默认为 1。因此您只需搜索 GENDER = 'M'。通过给出长度来解决它:@Gender nvarchar(10)

关于mysql - sql server 中的内联表值函数不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48684058/

相关文章:

jquery - MySQL:简单的 LIKE 语句与预期的模式不匹配

mysql - 在 MS SQL Server mgt studio 中,有没有办法格式化选择结果,如 mysql\G

sql-server - 如何更改表添加具有命名默认约束和命名外键约束的列?

php - Laravel:排除对多对多关系的过滤

php - 从mysql数据到json在数组中创建数组

mysql - MySQL如何检查列中的多个值

sql-server - 自动生成 SQL Server 数据库架构图

SQL 连接表命名约定

sql - SQL 中的累积日期

php - 如何进行正确的时间计算?