Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 转换varchar值时转换失败';第四季度和第二十七季度;到数据类型int_Sql_Sql Server - Fatal编程技术网

Sql 转换varchar值时转换失败';第四季度和第二十七季度;到数据类型int

Sql 转换varchar值时转换失败';第四季度和第二十七季度;到数据类型int,sql,sql-server,Sql,Sql Server,运行此查询时,我遇到以下错误: 将varchar值“Q4”转换为数据类型int时,转换失败 我怎样才能修好它 谢谢操作员+超载了。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联 datepart()返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数month(),而不是datepart(),因此: CREATE TABLE Persons ( PRE_DTR nvarchar(20), TR_PRE_DTR nvarchar(20) );

运行此查询时,我遇到以下错误:

将varchar值“Q4”转换为数据类型int时,转换失败

我怎样才能修好它


谢谢

操作员
+
超载了。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联

datepart()
返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数
month()
,而不是
datepart()
,因此:

CREATE TABLE Persons
(
    PRE_DTR nvarchar(20),
   TR_PRE_DTR nvarchar(20)
); 


INSERT INTO Persons(PRE_DTR, TR_PRE_DTR) 
VALUES ('10.12.2014', '');

INSERT INTO Persons(PRE_DTR, TR_PRE_DTR) 
VALUES ('10.12.2014', '');


SELECT
   PRE_DTR,
   CASE
      WHEN DATEPART(MONTH, PRE_DTR) IN (10, 11, 12) 
        THEN CONVERT(NVARCHAR(20), DATEPART(MONTH, PRE_DTR) + 'Q4') 
   END AS TR_PRE_DTR
FROM
   Persons

你的查询很接近。但是在
convert()
之前,您正在执行
+
。因此出现了错误,因为月份仍然是一个数字。

运算符
+
过载。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联

datepart()
返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数
month()
,而不是
datepart()
,因此:

CREATE TABLE Persons
(
    PRE_DTR nvarchar(20),
   TR_PRE_DTR nvarchar(20)
); 


INSERT INTO Persons(PRE_DTR, TR_PRE_DTR) 
VALUES ('10.12.2014', '');

INSERT INTO Persons(PRE_DTR, TR_PRE_DTR) 
VALUES ('10.12.2014', '');


SELECT
   PRE_DTR,
   CASE
      WHEN DATEPART(MONTH, PRE_DTR) IN (10, 11, 12) 
        THEN CONVERT(NVARCHAR(20), DATEPART(MONTH, PRE_DTR) + 'Q4') 
   END AS TR_PRE_DTR
FROM
   Persons

你的查询很接近。但是在
convert()
之前,您正在执行
+
。因此出现了错误,因为月份仍然是一个数字。

运算符
+
过载。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联

datepart()
返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数
month()
,而不是
datepart()
,因此:

CREATE TABLE Persons
(
    PRE_DTR nvarchar(20),
   TR_PRE_DTR nvarchar(20)
); 


INSERT INTO Persons(PRE_DTR, TR_PRE_DTR) 
VALUES ('10.12.2014', '');

INSERT INTO Persons(PRE_DTR, TR_PRE_DTR) 
VALUES ('10.12.2014', '');


SELECT
   PRE_DTR,
   CASE
      WHEN DATEPART(MONTH, PRE_DTR) IN (10, 11, 12) 
        THEN CONVERT(NVARCHAR(20), DATEPART(MONTH, PRE_DTR) + 'Q4') 
   END AS TR_PRE_DTR
FROM
   Persons

你的查询很接近。但是在
convert()
之前,您正在执行
+
。因此出现了错误,因为月份仍然是一个数字。

运算符
+
过载。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联

datepart()
返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数
month()
,而不是
datepart()
,因此:

CREATE TABLE Persons
(
    PRE_DTR nvarchar(20),
   TR_PRE_DTR nvarchar(20)
); 


INSERT INTO Persons(PRE_DTR, TR_PRE_DTR) 
VALUES ('10.12.2014', '');

INSERT INTO Persons(PRE_DTR, TR_PRE_DTR) 
VALUES ('10.12.2014', '');


SELECT
   PRE_DTR,
   CASE
      WHEN DATEPART(MONTH, PRE_DTR) IN (10, 11, 12) 
        THEN CONVERT(NVARCHAR(20), DATEPART(MONTH, PRE_DTR) + 'Q4') 
   END AS TR_PRE_DTR
FROM
   Persons
你的查询很接近。但是在
convert()
之前,您正在执行
+
。因此出现了错误,因为月份仍然是一个数字。

您的语法是“SQL Server”,但问题的标签是“MySQL”。请适当标记您的问题。您的语法为“SQL Server”,但问题标记为“MySQL”。请适当标记您的问题。您的语法为“SQL Server”,但问题标记为“MySQL”。请适当标记您的问题。您的语法为“SQL Server”,但问题标记为“MySQL”。请适当标记您的问题。