sql server 判断字段包含 中文,英文,数字,

该篇博客介绍了如何使用SQL Server查询语句来判断字段中是否包含中文、英文或数字。通过ascii函数结合特定条件,可以识别数字(ASCII值48-57)、字母(ASCII值65-123)和汉字(ASCII值123+)。此外,还提供了删除特定类型字符的方法,例如删除全为数字的字段。

  ,case when LEN(b.BKTXT)>6  then 0
  when ascii(dbo.f_RemoveChinese(b.BKTXT )) between 48 and 57  then   cast(replace(dbo.f_RemoveChinese(b.BKTXT ),'-','') as int)  --数字
  when ascii(dbo.f_RemoveChinese(b.BKTXT )) between 65 and 123 then 0  --字母
  when ascii(dbo.f_RemoveChinese(b.BKTXT ))  > 123 then 0 --汉字
  else 0  
  end as fj2

 

1.

sql语句判断是否为数字、字母、中文

select ascii(字段)

数字:48-57
字母:65-123
汉字:123+

如,要删除某个全为数字的字段

DELETE FROM table  WHERE ascii(name) between 48 and 57  

 

2.

一、包含中文字符

select * from 表名 where 列名 like '%[吖-座]%'

二、包含英文字符

select * from 表名 where 列名 like '%[a-z]%' 

三、包含纯数字

select * from 表名 where 列名 like '%[0-9]%'

 

删除中文函数:

  CREATE FUNCTION f_RemoveChinese  
    (  
        @str VARCHAR(500)  
    )  
    RETURNS VARCHAR(500)  
    AS  
    BEGIN  
     --  '%[0-9]%'            所有數字  
     --  '%[A-Za-z]%'         所有字母  
     --  '%[A-Za-z0-9]%'      所有數字與字母  
     --   ....                組合使用,依此類推  
        WHILE PATINDEX('%[吖-咗]%',@str) > 0   
            SET @str = STUFF(@str,PATINDEX('%[吖-咗]%',@str),1,'')  
          
        RETURN @str  
    END  
    GO  

 

SQL Server 2008 中,可以使用正则表达式类似的替代方法来查询字段为全数字的记录。由于 SQL Server 2008 不支持内置的正则表达式函数,可以通过以下方式实现: ### 方法一:使用 `ISNUMERIC` 函数 `ISNUMERIC` 函数可以判断一个字符串是否能够被转换为数字类型。但需要注意的是,`ISNUMERIC` 可能会将一些非纯数字(如 `'1e3'` 或 `'.'`)误判为数字[^2]。 ```sql SELECT * FROM 表名 WHERE ISNUMERIC(字段名) = 1 AND 字段名 NOT LIKE '%[^0-9]%' ``` 上述查询中,`ISNUMERIC(字段名) = 1` 判断字段是否为数类型,而 `字段名 NOT LIKE '%[^0-9]%'` 确保字段包含数字字符[^3]。 --- ### 方法二:使用 `LIKE` 运算符 通过 `LIKE` 运算符可以精确匹配字段是否包含数字字符。 ```sql SELECT * FROM 表名 WHERE 字段名 LIKE '[0-9]%' AND 字段名 NOT LIKE '%[^0-9]%'; ``` 此查询确保字段数字开头,并且不包含任何非数字字符[^4]。 --- ### 方法三:结合 `PATINDEX` 函数 `PATINDEX` 函数可以用于查找特定模式的第一个出现位置。通过该函数可以检测字段是否完全由数字组成。 ```sql SELECT * FROM 表名 WHERE PATINDEX('%[^0-9]%', 字段名 + 'X') = 0; ``` 在此查询中,`字段名 + 'X'` 是为了避免字段为空时引发错误。如果字段为空,则 `PATINDEX` 会返回 1,因此添加一个非数字字符(如 `'X'`)来避免这种情况[^5]。 --- ### 注意事项 1. 如果字段可能包含(`NULL`),需要在查询条件中加入 `IS NOT NULL` 来排除空。 2. 上述方法适用于字符串类型的字段。如果字段已经是数类型,则无需进行额外检查。 --- ### 示例代码 假设有一个表 `TestTable`,其中包含一个字段 `Value`,需要查询该字段为全数字的记录: ```sql SELECT * FROM TestTable WHERE ISNUMERIC(Value) = 1 AND Value NOT LIKE '%[^0-9]%' AND Value IS NOT NULL; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫气东来_999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值