我编写了一个存储过程来散列某个列的值.我需要在CASE WHEN或IIF语句中使用此HASHBYTES函数,如下所示:
DECLARE @Hash varchar(255) = 'testvalue'
SELECT IIF(1=1, HASHBYTES('SHA1',@Hash), @Hash)
SELECT CASE WHEN 1=1 THEN HASHBYTES('SHA1',@Hash) END AS Hashcolumn
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么我从上面的查询得到不同的输出?似乎每当我在CASE WHEN/IIF语句中添加一个ELSE时,它都会返回一串奇怪的字符(ü<þ+OUL'RDOk{\Ìø如上例所示).
谁能告诉我为什么会这样?我需要使用CASE WHEN或IIF.
多谢你们
我有以下查询
SELECT LEFT(CONVERT(varchar,DATEADD(MONTH,-1, GETDATE()),112),6)
Run Code Online (Sandbox Code Playgroud)
这将导致:201708(截至今日的getdate())
我还需要减去一年,因此它将会到来:201608
我尝试添加另一个DATEADD函数,但我无法让它工作.
任何人都能指出我正确的方向吗?
我的数据库中有以下日期时间格式(作为varchar)13-04-2018 1:05:00.
我需要将其转换为以下格式:2018-04-13 01:05:00.作为datetime.
正常转换函数无法执行此操作,因为它们尝试执行第13个月,并且该月不存在.这个错误:
将varchar数据类型转换为日期时间数据类型会导致超出范围的值.
有人知道如何转换这个日期问题吗?
我们使用以下模板通过 ARM 模板部署多个资源组:
"parameters": {
"ResourceGroups": {
"type": "array",
"defaultValue": [
"RG1",
"RG2",
"RG3"
]
}
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2018-05-01",
"location": "[parameters('rgLocation')]",
"name": "[parameters('ResourceGroups')[copyIndex()])]",
"copy": {
"name": "resourcegroupcopy",
"count": "[length(parameters('ResourceGroups'))]",
"mode": "serial"
},
"properties": {},
"tags": {}
Run Code Online (Sandbox Code Playgroud)
我们还希望在这些资源组上编写 Azure 标记脚本。然而,问题是,并非我们创建的所有资源组都需要相同的标签。它们因资源组而异。
例如:RG1 需要 Tag1,RG2 需要 Tag2,等等。
我如何将其放入我的脚本中?
任何人都可以指出我正确的方向吗?
谢谢!