getstr(str)函数 之 在SQL语句中,如何判断汉字和字符?

----------------------------------------------------------------------------------------------------------------------
--创建    Function :dbo.getstr(str)
--功能:提取字符串('-' 或 '\' 或 '空格' 或 '汉字' 字符前面的部分的字符串)
--时间:2012-3-26
--作者:   <李美宏>
----------------------------------------------------------------------------------------------------------------------
drop function dbo.getstr
create function dbo.getstr
(
 @str nvarchar(256)
)
returns nvarchar(256)
as
begin
 return
 (
  case
   when patindex('%-%', @str)>0 then dbo.getstr(substring(@str, 1, patindex('%-%', @str)-1))
   when patindex('%/%', @str)>0 then dbo.getstr(substring(@str, 1, patindex('%/%', @str)-1))
   when patindex('% %', @str)>0 then dbo.getstr(substring(@str, 1, patindex('% %', @str)-1))
   when patindex('%[吖-座]%',@str)>0 then dbo.getstr(substring(@str, 1, patindex('%[吖-座]%', @str)-1))
   else @str
  end
 )
end
----------------------------------------------------------------------------------------------------------------------
oracle中:
------------
SQL> create table test(a varchar2(10));

Table created.

SQL> insert into test values('鸟');

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test values('深刻');

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test values('aaa');

1 row created.

SQL> insert into test values('bbb');

1 row created.

SQL> commit;

Commit complete.

SQL> select a from test;

A
----------

深刻
aaa
bbb

SQL> select a from test where asciistr(a) like '%\%';

A
----------

深刻

SQL> select a from test where asciistr(a) not like  '%\%';

A
----------
aaa
bbb
 
select a,asciistr(a) from test where asciistr(a) like '%\%';

A          ASCIISTR(A)
---------- --------------------------------------------------
鸟         \FFFD\FFFD
深刻       \FFFD\FFFD\FFFD\FFFD
 
----------------------------------------------------------------------------------------------------------------------
sql中:
--------
declare @t table([Name] nvarchar(10))
insert @t select '好的啊!'
insert @t select '12345好的'
insert @t select '123'
insert @t select 'sdff'
select * from @t where PATINDEX('%[吖-座]%',[name])>0
/*
Name      
----------
好的啊!
12345好的

(所影响的行数为 2 行)*/
------------------------------------------------------------
PATINDEX('%[吖-座]%',[name])>0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值