1

2 つの列の連結値を使用してデータを表示しようとしています。ストアド プロシージャで実際に使用する前に、クエリでこれを行う方法を最初にテストしていますが、結果が返されません。だから私は 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';

結果

| | IDNUMBER | 名前 | 姓 | 年齢 | フルネーム |
|---------------|------|---------|-----|---------- -|
| | 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 に答える