我正在尝试通过HDBC和ODBC从 MSSQL 数据库中查询一些数据。但是,当尝试从列名中包含 unicode 的表中查询数据时,我遇到了问题。
考虑以下 MWE:
mwe :: IConnection conn => conn -> IO [[SqlValue]]
mwe conn =
do r <- quickQuery' conn
"SELECT [Højde] FROM [Table]"
[]
return r
执行上述操作并将连接对象传递给数据库时,我收到以下错误消息:
*** Exception: SqlError {seState = "[\"42S22\",\"42000\"]", seNativeError = -1, seErrorMsg = "execute execute: [\"207: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid column name 'H\\195\\184jde'.\",\"8180: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared.\"]"}
相关部分很可能H\\195\\184jde
不是有效的列名。
我的研究主要导致了查询参数中有关 unicode 的结果。我尝试使用字节字符串而不是普通字符串,但是因为 for 的参数QuickQuery'
是一个没有帮助的字符串。