使用两列的连接值来显示数据

时间:2013-11-05 19:38:39

标签: sql-server

我正在尝试使用两列的连接值来显示数据。我首先测试在查询中执行此操作的方法,然后在存储过程中实际使用它,但我只是没有得到任何结果。 所以我有一个名为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',我想显示所有可用的数据,但我不知道如何做到这一点。任何人都可以通过解释如何做到这一点来帮忙吗?

3 个答案:

答案 0 :(得分: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';

结果

|      IDNUMBER | NAME | SURNAME | AGE |  FULLNAME |
|---------------|------|---------|-----|-----------|
| 1             |  Bob |   Smith |  10 | Bob Smith |

Documentation

其他一些想法:

  • IDNumber一个字符串数据类型似乎很愚蠢;也许称之为别的什么?
  • 您真的需要varchar(max)作为名称列吗?
  • 不存储计算的值。您应该存储该人的出生日期,然后计算年龄。

答案 1 :(得分: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

答案 2 :(得分:0)

在where子句......

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

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