1

我正在尝试使用两列的连接值来显示数据。在实际在存储过程中使用它之前,我首先测试了在查询中执行此操作的方法,但我只是没有得到任何结果。所以我有一个名为 Person 的表:

    CREATE TABLE Person
    (
     IDNumber   char(13)     NOT NULL,
     Name       varchar(MAX) NOT NULL,
     Surname    varchar(MAX) NOT NULL,
     Age        int          NOT NULL,
     PRIMARY KEY (IDNumber)
    )

如果 Name 和 Surname 的连接值等于说“Harriet West”,我想显示所有可用数据,但我不知道该怎么做。谁能帮助解释如何做到这一点?

4

3 回答 3

2

您需要一个计算列,例如:

CREATE TABLE Person (
    IDNumber   char(13)     NOT NULL,
    Name       varchar(MAX) NOT NULL,
    Surname    varchar(MAX) NOT NULL,
    Age        int          NOT NULL,
    Fullname AS Name + ' ' + Surname,
    PRIMARY KEY (IDNumber)
)

例子

INSERT INTO Person (IDNumber, Name, Surname, Age) 
VALUES ('1', 'Bob', 'Smith', 10);

然后,您可以查询计算列:

SELECT [column list] FROM Person WHERE Fullname = 'Bob Smith';

结果

| 编号 | 姓名 | 姓氏 | 年龄 | 全名 |
|---------------|------|---------|-----|---------- -|
| 1 | 鲍勃 | 史密斯 | 10 | 鲍勃·史密斯 |

文档

其他一些想法:

  • IDNumber给出字符串数据类型似乎很愚蠢;也许叫它别的东西?
  • 你真的需要varchar(max)名称列吗?
  • 不要存储计算值。您应该存储此人的出生日期,然后计算年龄。
于 2013-11-05T19:40:31.287 回答
1

我喜欢计算列的方法,但如果你不想要它,在你的查询中你可以这样做:

SELECT IDNumber, Name, Surname, Name + ' ' + Surname [Full Name], Age
FROM Person

如果您想按全名查询,您可以执行以下操作:

SELECT IDNumber, Name, Surname, Age
FROM Person
WHERE Name + ' ' + Surname = 'Harriet West'

sqlfiddle demo

于 2013-11-05T19:47:08.843 回答
0

在 where 子句中...

Select * from Person
Where SurName + ' ' + Name = 'Harriet West'

如果 SurName 或 Name 有可能为 Null,请务必将 concat_null_yields_null 设置为 Off。

于 2013-11-05T19:50:38.693 回答