我有一个表,该表的列配置为保存sudo apt install libssl-dev
数据类型。
我正在尝试使用
nvarchar
SQL服务器卡在我要分配给返回的INSERT INTO TABLE_NAME VALUES (value1, value2...)
数据类型列的180个字符串上:
错误:以[字符串的一部分]开头的标识符太长。 最大长度为128。
我不明白为什么会这样,因为我在这里读到What is the maximum characters for the NVARCHAR(MAX)?
时,nvarchar(max)应该拥有2GB的存储空间我对这里的问题有何想法?
更新:
使用以下命令创建表:
nvarchar
我的实际INSERT语句如下:
CREATE TABLE MED_DATA (
MED_DATA_ID INT
,ORDER_ID INT
,GUID NVARCHAR
,INPUT_TXT NVARCHAR
,STATUS_CDE CHAR
,CRTE_DTM DATETIME
,MOD_AT_DTM DATETIME
,CHG_IN_REC_IND CHAR
,PRIMARY KEY (MED_DATA_ID)
)
答案 0 :(得分:5)
默认情况下,T-SQL中的双引号不分隔字符串。 They delimit an identifier。因此,您不能在此处使用双引号。您可以更改默认的,但不能。
如果这是直接在查询窗口中编写的,请对字符串使用单引号,然后对字符串中的双引号进行转义以将其转义:
INSERT INTO MED_DATA VALUES (5, 12, '8fd9924', '{''firstName'':''Foo'',''lastName'':''Bar'',''guid'':''8fd9924'',''weightChanged'':false,''gender'':''Male'',''heightFeet'':9,''heightInches'':9,''weightPounds'':999}', 'PENDING', '2017-09-02T00:00:00.000', '2017-09-02T00:00:00.000', NULL)
但是,相反,如果您要从另一个程序传递此字符串,那么该是时候学习如何使用参数化查询了。这还使您可以将日期跨传递为日期,而不必依靠字符串解析来正确地重建它们。
另外,如前所述,您需要fix your table definitions,因为它们当前为nvarchar
,这与nvarchar(1)
相同。
答案 1 :(得分:1)
您是否知道标识符是什么?这里有个提示-它是一个名字。 SQL Server不是在抱怨您的数据,而是在抱怨字段或表名。因此,必须完全使您的SQL混乱,以便将文本的一部分解析为字段或表的名称。是的,这些字符限制为128个字符。
这在错误消息中很明显:
错误:标识符
明确指出这是一个标识符问题。