sql的like语法里面 []有特殊含义,类似正则表达式的范围,比如[0-9]代表数字
创新互联于2013年开始,是专业互联网技术服务公司,拥有项目网站建设、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元宿州做网站,已为上家服务,为宿州各地企业和个人服务,联系电话:13518219792
解决方法一是比如[可以用[[]查到,另一方法是用转义
SELECT * from sampleTable where sampleData like '\[%' ESCAPE '\'
参考资料 网页链接
sql:
CREATE FUNCTION f_Convert(
@str NVARCHAR(4000), --要转换的字符串
@flag bit --转换标志,0转换成半角,1转换成全角
)RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @pat nvarchar(8),@step int,@i int,@spc int
IF @flag=0
SELECT @pat=N'%[!-~]%',@step=-65248,
@str=REPLACE(@str,N' ',N' ')
ELSE
SELECT @pat=N'%[!-~]%',@step=65248,
@str=REPLACE(@str,N' ',N' ')
SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
WHILE @i 0
SELECT @str=REPLACE(@str,
SUBSTRING(@str,@i,1),
NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))
,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
RETURN(@str)
END
GO
update table_1 set column_name=dbo.f_Convert(column_name,0)
当数据量比较大时,一条一条改不太现实,可以用上面的函数批量更改
如果能够确认两个表的property字段类型是一样的,那么就是因为字符的全角半角或空格问题造成的。两个表的字符比较全角半角问题是不易解决的。空格问题可以用以下语句查询:SELECT * FROM tab1 WHERE LTrim(RTrim(property)) in (SELECT LTrim(Rtrim(property)) FROM tab2)
declare @b int
set @a = '123'
set @b = 123
cast(@a as int)--就是把@a转换为int类型的
cast(@b as varchar(20))--就是把@b转换为varchar类型的
declare @a varchar(20)
set @a = '12345(789)'
print left(@a, CHARINDEX ('(',@a,1)-1 )
--输出12345
关于sql中查询的时候是否区分大小写的问题
CI指定不区分大小写,CS指定区分大小写
AI指定不区分重音,AS指定区分重音
Pref
指定大写字母优先
Omitted指定不区分全半角,WS指定区分全半角
如果绑定到架构的对象依赖于数据库排序规则,则无法更改数据库排序规则。请删除数据库排序规则的依赖项,然后重试操作
alter
database
MySchool
COLLATE
Chinese_PRC_CS_AS
--可以针对某个表使用区分大小写的查询
Select
*
From
[Users]
Where
uLoginName='ADMIN'
collate
Chinese_PRC_CS_AI_WS--在数据库属性--选项中可以设置数据库排序规则--查询当前可用的排序规则