在我写的一个网络应用程序中,有一个char代码存在问题,我正在运行一个UTF-8 html页面从mssql中读取SQL_Latin1_General_CP850_CI_AS,这对于打印适当的特殊字符基本上是一个巨大的痛苦。我使用CAST
到SELECT
中的varbinary
处理了它。有点像:
SELECT CAST(table_name.column_name AS VARBINARY(MAX)) AS column_name FROM table_name
由于这还不够,我不得不将html页面强制为ISO-8859-1,如:
header('Content-Type: text/html; charset=ISO-8859-1');
现在我还有另一个问题,如何在用户输入字符串的情况下创建一个WHERE
子句?
我已经考虑过对WHERE
条款进行投射,但是在我的几次尝试中我没有太多运气。我做了类似的事情:
$query = $query." WHERE CAST(table_name.colunm_name AS VARBINARY(MAX)) LIKE '%".(binary)$string."%'";
和
$query = $query." WHERE CAST(table_name.colunm_name AS VARBINARY(MAX)) LIKE '%".$string."%'";
这两次尝试我都不走运。即使我输入没有特殊字符,查询也不会返回任何结果。
这可以这样做吗?或者你想到另一种方式?
此外,我还检查了要与之比较的字符串的字符集,当没有特殊字符时,我得到ASCII
,而当涉及字符时,我UTF-8
。
答案 0 :(得分:0)
要使用CAST功能,请使用子查询:
从*中选择*(选择Cast(table_name.column_name作为Varbinary(max))[Name])作为NameList 其中名称为%Param1%;