Golang SQL查询语法

Golang SQL查询语法,go,Go,在golang代码中使用sql查询获取语法错误。golang中此SQL查询所需的正确语法: rows, errQuery := dbCon.Query("SELECT B.LatestDate ,A.SVRName AS ServerName ,A.DRIVE ,A.TotalSpace_GB AS TotalSpaceGB ,(ISNULL(A.TotalSpace_GB, 0) - ISNULL(A.FreeSpace_GB, 0)) AS UsedSpaceGB ,A.

在golang代码中使用sql查询获取语法错误。golang中此SQL查询所需的正确语法:

rows, errQuery := dbCon.Query("SELECT B.LatestDate
    ,A.SVRName AS ServerName
    ,A.DRIVE
,A.TotalSpace_GB AS TotalSpaceGB
,(ISNULL(A.TotalSpace_GB, 0) - ISNULL(A.FreeSpace_GB, 0)) AS 
 UsedSpaceGB
,A.FreeSpace_GB AS FreeSpaceGB
,CASE 
WHEN ((A.FreeSpace_GB / A.TotalSpace_GB) * 100)  between 25 and 
35
THEN 1
WHEN ((A.FreeSpace_GB / A.TotalSpace_GB) * 100) <= 25   THEN 2
ELSE 0
END AS WARNINGSTATUS
    FROM Table_ServerDiskSpaceDetails A WITH (NOLOCK)
    INNER JOIN (
SELECT SVRName
,MAX(Dt) LatestDate
FROM Table_ServerDiskSpaceDetails WITH (NOLOCK)
GROUP BY SVRName
) B ON A.Dt = B.LatestDate
AND A.SVRName = B.SVRName
    ORDER BY WARNINGSTATUS DESC
,ServerName
,A.Drive")
行,errQuery:=dbCon.Query(“选择B.LatestDate
,A.SVRName作为服务器名
,A.DRIVE
,A.TotalSpace_GB作为TotalSpaceGB
,(ISNULL(A.TotalSpace_GB,0)-ISNULL(A.FreeSpace_GB,0))作为
UsedSpaceGB
,A.FreeSpace_GB作为FreeSpaceGB
案例
当((A.FreeSpace_GB/A.TotalSpace_GB)*100)介于25和
35
那么1

当((A.FreeSpace\u GB/A.TotalSpace\u GB)*100)您的SQL语句位于多行上,但您没有使用正确的多行语法。正确的语法为:

someLongString := "Line 1 " +    // Don't forget the trailing space
                  "Second line." // This is on the next line.
目前,您只是尝试在不同行上的一组引号之间填充所有内容


编辑:正如@Kaedys在下面所说的,下面的方法同样有效,而且可能更有效

someLongString := `Line 1
                   Second line.`

将第一行和最后一行的“\”都更改为“`”,或者在查询字符串的每一行上加引号,然后在每一行之间加一个“+”,如

"select" +
" *" +
" from" +
" table"

语法错误是什么?您是否尝试过在控制台上运行查询(它通常会告诉您错误在哪里)?您运行的是哪种SQL变体(MySQL、Postgres等)?这是在SQL Management Studio/Console上运行的mssql查询,但与golang无关,在该SQL查询中出现语法错误。或者,您可以使用反勾号来注释字符串文字。在这种情况下,新行会得到正确处理。这也避免了在连接大量字符串时出现的性能问题。@Kaedys True,that还保留了所有换行符换行符,这是需要注意的。SQL对空格并不特别敏感,但最好记住这一点。