首先,我使用的是SQL Server 9.00.4035.00,即SQL Server 2005 SP3。
我使用以下命令从视图中获取结果,该视图从包含英文或希腊字符的列的表中获取行。
sqlcmd -W -S SERVER_NAME -d DATABASE_NAME -U USER_NAME -P PASSWORD -s "|" -Q "set nocount on; set ansi_warnings off;SELECT * from DATABASE.VIEW;"
此命令返回带有英文字符的行,但是当谈到希腊字符时,我只能得到??????
例如,而不是
1110|20160907|ΓΙΩΡΓΟΣ
我正在
1110|20160907|????????
我已经尝试了-f和-u选项,但它们似乎都没有用。以下是我如何使用它们:
650001适用于符合this link
的UTF-8sqlcmd -W -S SERVER_NAME -d DATABASE_NAME -U USER_NAME -P PASSWORD -f 65001 -s "|" -Q "set nocount on; set ansi_warnings off;SELECT * from DATABASE.TABLE;"
1253代表希腊语book
sqlcmd -W -S SERVER_NAME -d DATABASE_NAME -U USER_NAME -P PASSWORD -f 1253 -s "|" -Q "set nocount on; set ansi_warnings off;SELECT * from DATABASE.TABLE;"
-u选项
sqlcmd -W -S SERVER_NAME -d DATABASE_NAME -U USER_NAME -P PASSWORD -u -s "|" -Q "set nocount on; set ansi_warnings off;SELECT * from DATABASE.TABLE;"
答案 0 :(得分:0)
我找到了解决方案。问题是我从一个视图中选择。
所以我有DATABASE.TABLE1和一个从TABLE1中选择的视图DATABASE.VIEW1
如果我从TABLE1中选择,则数据即将使用-f 65001 如果我从VIEW1中选择,则数据将显示为???。
问题在于,在VIEW1中我将已经的VARCHAR字段转换为VARCHAR。因此,出于某种原因,当我将VARCHAR转换为VARCHAR时,我猜错了Collation。