SQL Server字符集问题
在SQL Server中执行SQL语句或存储过程时会出现错误信息如下:“从字符串转换为 datetime 时发生语法错误”,我遇上的这种错误基本上都是SQL语句中对应某字段有类似如下格式的日期:01-Jan-2008,而我安装的是SQL Server 2000中文版,对于此种格式的日期识别不了,但是我曾经修改过SQL Server服务器中的属性里“服务器设置”,将其语言设置为“English”,但是仍然解决不了问题。如果将SQL语句或者存储过程里面的时间一个一个进行修改,则太麻烦了。
解决方法:
在SQL 语句或存储过程执行前面加一条SQL语句:SET LANGUAGE us_english
就可以了。
我查了SQL Server的帮助,此语句作用如下:
SET LANGUAGE
指定会话的语言环境。会话语言确定 datetime 格式和系统信息。
语法
SET LANGUAGE { [ N ] 'language' | @language_var }
参数
[N]‘language‘ | @language_var
是存储在 syslanguages 中的语言名称。该参数可以是 Unicode,或者是转换为 Unicode 的 DBCS。若要指定使用 Unicode 的语言,请使用 N‘language‘。如果将语言指定为变量,则变量的数据类型必须为 sysname。
注释
SET LANGUAGE 的设置是在执行或运行时设置,而不是在分析时设置。
权限
SET LANGUAGE 权限默认授予所有用户。
示例
下例将默认语言设置为 us_english。
SET LANGUAGE us_english GO示例:SELECT * FROM [master].[dbo].[syslanguages]在支持的字符集中去指定一种,如:set LANGUAGE 简体中文今天碰到了以下的情况,特此记下来,供参考:如在搜索的字符串中存在乱码匹配的话,可以这样做:select * from trMain where rvc1 like N'%帶小狗出去玩%'select * from trMain where rvc1 like N'%Myungin Electro?nics Co.,LTD.???????????????????%'select * from trMain where rvc1 like N'%Âà±H: §Ú̬O¥þ¥xÆW¹CÀ¸-³ÌÂ×´Iªº¯¸¥x%'在前面加上一个“N”,指定语言名称为Unicode, 这样就可以通通搜出来。