我正在使用本网站的代码(直到第一个案例陈述结束) -
http://www.sqlusa.com/bestpractices2005/abbreviation/
DECLARE @StateCode char(2)
SET @StateCode = 'TX'
SELECT 'State name from state code' =
CASE
WHEN @StateCode = 'AK' THEN 'ALASKA'
WHEN @StateCode = 'AL' THEN 'ALABAMA'...
...WHEN @StateCode = 'WV' THEN 'WEST VIRGINIA'
WHEN @StateCode = 'WY' THEN 'WYOMING'
ELSE '' END
GO
如果我从网站直接复制/粘贴到SSMS,此代码运行正常。
如果我将此代码(从网站上)复制/粘贴到Excel中,然后从Excel复制/粘贴到SSMS,则代码将不再运行,即使它与原始代码明显相同。 SSMS在整个代码中都会出现语法错误。
问题似乎是空格("")字符;如果替换所有"空格字符"与"真实"空格,错误将消失,代码将正确运行。
为什么会这样?
答案 0 :(得分:0)
SELECT
声明存在一些问题。您可以重写为
SELECT 'State name from state code' + ' =' +
CASE
WHEN @StateCode = 'AK' THEN 'ALASKA'
WHEN @StateCode = 'AL' THEN 'ALABAMA'
WHEN @StateCode = 'WV' THEN 'WEST VIRGINIA'
WHEN @StateCode = 'WY' THEN 'WYOMING'
ELSE NULL END AS Mycolumn
答案 1 :(得分:0)
从excel复制可以在文本中引入不间断的空间。选择其中一个"空格"显示为错误并使用常规空间替换查找。
答案 2 :(得分:0)
从Excel粘贴时,我总是使用记事本(实际上我使用的是NotePad ++)。 Excel似乎总是添加垃圾。将代码粘贴到记事本中,看看是否有任何时髦字符或奇数间距。然后将其删除并将代码表格粘贴到那里。
答案 3 :(得分:0)
在Excel中存储内容时,复制的最佳做法是选择需要复制的文本单元格并从公式栏中复制,而不是直接从单元格复制。在单元格中存储数据时,Excel会添加一些不可见的字符:换行符等。
答案 4 :(得分:0)
答案最终是空间(ascii 32)被非破坏空间(ascii 160)取代。一旦更换了不间断的空格,代码就会正确运行。
这里还有一些你可以用来测试它的链接,它会告诉你哪个ascii值是一个字符