WHERE子句中的MSSQL CAST

时间:2016-05-04 09:35:07

标签: php sql-server

在我写的一个网络应用程序中,有一个char代码存在问题,我正在运行一个UTF-8 html页面从mssql中读取SQL_Latin1_General_CP850_CI_AS,这对于打印适当的特殊字符基本上是一个巨大的痛苦。我使用CASTSELECT中的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

1 个答案:

答案 0 :(得分:0)

要使用CAST功能,请使用子查询:

从*中选择*(选择Cast(table_name.column_name作为Varbinary(max))[Name])作为NameList 其中名称为%Param1%;