3

クエリを使用して、次の SQL テーブルを作成しようとしています。

 create table Return_indiv (Date datetime, issueid varchar(255), Return varchar(255))

ご覧のとおり、列名の 1 つが "Return" です。ただし、SQL はそれが関数returnであると認識し、次のエラーを返します。

 Msg 156, Level 15, State 1, Line 1
 Incorrect syntax near the keyword 'Return'.
 Msg 195, Level 15, State 10, Line 1
 'varchar' is not a recognized built-in function name.

このエラーを克服する方法はありますか? ありがとう!

4

5 に答える 5

5

少し明確にするために、Return はデータベースの予約語です (おそらく関数か何か)。そのため、テーブル名、列名などとしてそのまま使用することはできません。[] で囲むことで回避できます。ただし、オブジェクト名には予約語を使用しないほうがよいでしょう。その列に何が表示されるかはわかりませんが、RETURN_VALUE、RETURN_ITEM などの名前を付けることができます。予約語を避けるだけで、ほぼすべての人にとって生活が楽になります。

于 2013-09-27T15:26:57.173 に答える
1

[]パーサーが列名をキーワードとして認識しないように、括弧を使用する必要があります。

それでも、キーワードを使用して列またはテーブルに名前を付けることはお勧めしません。コードを理解しすぎると、他の人にとっては難しくなります。他の開発者が ot がキーワードであることを知らない場合、エラーが発生した場合にクエリで何が失敗したのかを理解するのが難しい場合があります。

これを試して

USE tempdb
GO

CREATE TABLE Return_indiv
(
    [Date]   DATETIME,
    issueid  VARCHAR(255),
    [RETURN] VARCHAR(255)
)
于 2013-09-27T15:23:33.423 に答える