SQL Server字符集问题

八 21st, 2010

在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 的语言,请使用 Nlanguage‘。如果将语言指定为变量,则变量的数据类型必须为 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, 这样就可以通通搜出来。

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
目前还没有任何评论.