Sql 子串和替换在一起?
我是T-SQL的新手。我想同时使用Sql 子串和替换在一起?,sql,sql-server,tsql,substring,Sql,Sql Server,Tsql,Substring,我是T-SQL的新手。我想同时使用子字符串和替换,但效果不理想, 或者可能有一些我不知道的额外功能 我有一列存储日期时间,格式如下:“1393/03/03” 但我想这样显示:'930303',也就是说,我想省略这些字符'13'和'/'。 我尝试了子字符串和替换,但它不起作用 这是我的密码: SELECT SUBSTRING(CreateDate,2,REPLACE(CreateDate,'/',''),8) 您能帮助我吗?尝试以下方法来测试我的解决方案: SELECT SUBSTRING(RE
子字符串
和替换
,但效果不理想,
或者可能有一些我不知道的额外功能
我有一列存储日期时间,格式如下:“1393/03/03”
但我想这样显示:'930303',也就是说,我想省略这些字符'13'和'/'。
我尝试了子字符串
和替换
,但它不起作用
这是我的密码:
SELECT SUBSTRING(CreateDate,2,REPLACE(CreateDate,'/',''),8)
您能帮助我吗?尝试以下方法来测试我的解决方案:
SELECT SUBSTRING(REPLACE('1393/03/03','/',null),3,8)
你的专栏将是:
SELECT SUBSTRING(REPLACE(CreateDate,'/',null),3,8)
试试这个:
SELECT REPLACE(SUBSTRING(CreateDate,2,8),'/','')
如果输入列的数据类型为
DATETIME
或DATETIME2
(或任何日期/时间数据类型),则应将其转换为VARCHAR
,然后替换/
字符。()
如果它已经是一个字符串(VARCHAR),那么下面的解决方案就可以了
DECLARE @X DATETIME2 = '1393/03/03' -- Example for DATE/TIME data type
DECLARE @Y VARCHAR(32) = '1393/03/03' -- Example for VARCHAR data type
SELECT
@X
, @Y
, REPLACE(CONVERT(VARCHAR(32), @X, 11), '/', '') -- Japan style
, CONVERT(VARCHAR(32), @X, 12) -- ISO style
, REPLACE(STUFF(@Y, 1, 2, ''), '/', '')
编辑
请注意,格式化不适用于数据库引擎,如果可能,请在前端应用程序中进行格式化
编辑2
您的错误是:选择子字符串(CreateDate,2,REPLACE(CreateDate,“/”,“),8)
子字符串
有3个参数:
(字符、二进制、文本、ntext或图像)表达式
(bigint)开始
(bigint)长度
在查询中有4个参数,第三个是VARCHAR类型。对于您的解决方案,有效的表达式是:
子字符串(REPLACE(CreateDate,“/”,”),3,6)
(如果CreateDate是VARCHAR或NVARCHAR。如果是DATETIME或DATETIME2,您应该使用上面显示的方法。)您可以使用CONVERT
函数
允许将日期从一种格式转换为另一种格式,在本例中为111-日本yyyy/mm/dd到12-ISO yymmdd
SELECT convert(NVARCHAR(50), GETDATE(), 12)
SELECT convert(NVARCHAR(50), CAST('1393/03/03' AS DATE), 12)
声明@STR VARCHAR(50)='1393/03/03'
选择子字符串(替换(@STR,“/”,”),3,LEN(@STR))
在此处输入代码
SELECT RIGHT(REPLACE(CreateDate,'/',''),6)
什么不起作用?错误是什么?参数数据类型nvarchar对于子字符串函数的参数3无效。+1是最佳答案:我正要键入:)是的,即使它不是公认的答案,我希望有人发现它有用!