SQL Server Express查询结果中出现J前缀的问题咨询
SQL Server Express查询结果中出现J前缀的问题咨询
嘿,我来帮你拆解下这个奇怪的J字符问题~
首先可以放心的是,你的SQL查询逻辑本身是没问题的——按日期分组取温度最值、过滤2021年数据的逻辑都是正确的,那些J字符完全是输出显示/格式层面的问题,和数据本身、SQL执行结果无关。
可能的原因及解决办法:
最常见的情况:列分隔符显示异常
很多老式的SQL命令行工具(比如osql、旧版sqlcmd)默认会用竖线|作为查询结果的列分隔符,但如果你的终端字体不支持正确显示竖线字符,就会把它显示成J。你可以试试这两个办法:- 更换终端字体:换成Consolas、Courier New这类标准等宽字体,竖线就能正常显示了;
- 手动指定列分隔符:如果用的是sqlcmd,可以通过
-s参数指定其他分隔符,比如改成逗号分隔的CSV格式,命令示例如下:sqlcmd -S 你的服务器名 -d 你的数据库名 -U 用户名 -P 密码 -s"," -Q "SELECT snapdate 'Date', MAX(temp) 'Max', MIN(temp) 'Min' FROM weather WHERE YEAR(snapdate) = 2021 GROUP BY snapdate ORDER BY snapdate ASC"
顺便优化下你的SQL语句
你原来用SUBSTRING(CAST(snapdate AS char), 1, 4) = '2021'过滤年份的写法可以优化,直接用YEAR()函数更高效也更直观:SELECT snapdate "Date", MAX(temp) "Max", MIN(temp) "Min" FROM weather WHERE YEAR(snapdate) = 2021 GROUP BY snapdate ORDER BY snapdate ASC
备注:内容来源于stack exchange,提问作者Jacques
相关产品推荐
相关产品推荐

