`
bingyu
  • 浏览: 42309 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SQL字符处理

阅读更多

一:取字符串中出现的首个数字是5的那些记录

比如 ZCB520,ZCB888,520ZCB,

ZCB888就是需要被过滤的。

 

select colName,  patindex('%[0-9]%',colName) 首个数字出现的位置 from TableName
where substring(colName,patindex('%[0-9]%',colName),1)='5' 
 

 

如果想要返回首个非数字出现的位置就用:patindex('%[^0-9]%',colName)

PATINDE函数说明。

 

语法  PATINDEX (<’%substring _expression%’>, <column_ name>)

        其中子串表达式前后必须有百分号“%”否则返回值为0.

         这个函数从<column_ name>列中去查找<’%substring _expression%’>表达式指定的字符串,并返回该字符串首次在column_ name出现的位置。

 

二:在大写字母前插入空格

 

Id value
  1 HelloWorld
  2 NewArrivalsCareerClothing
  3 CheckbookCoversCheckbookCovers
  要更新成:
  1 Hello World
  2 New Arrivals Career Clothing
  3 Checkbook Covers Checkbook Covers

解决方案一:

create table tb(id int,[value] varchar(100))
insert into tb
select 1,'HelloWorld' union all
select 2,'NewArrivalsCareerClothing' union all
select 3,'CheckbookCoversCheckbookCovers' union all
select 4,'WTO'
go

create function f_change(@a varchar(100))
returns varchar(100)
as
begin
declare @len int
declare @int int
declare @str varchar(100)
set @str = ''
set @len = len(@a)
set @int = 1
while @int <= @len
    begin
        if (ascii(substring(@a,@int,1)) between 66 and 96)
        begin
            set @str = @str + ' ' + substring(@a,@int,1)
        end
        else
        begin
            set @str = @str + substring(@a,@int,1)
        end
        set @int = @int + 1
    end
return stuff(@str,1,1,'')
end
go

select * from tb
select id,dbo.f_change([value]),[value] from tb

drop table tb
drop function f_change

 

解决方案二:

 

EXEC sp_configure 'show advanced options', 1
RECONFIGURE

EXEC sp_configure 'Ole Automation Procedures', 1
RECONFIGURE


--以下是我以前写的利用正则表达式替换字符串的函数
IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL 
    DROP FUNCTION dbo.RegexReplace
GO

CREATE FUNCTION dbo.RegexReplace
(
    @string VARCHAR(MAX),    --被替换的字符串
    @pattern VARCHAR(255),    --替换模板
    @replacestr VARCHAR(255),    --替换后的字符串
    @IgnoreCase INT = 0    --0区分大小写 1不区分大小写
)
RETURNS VARCHAR(MAX)
AS 
BEGIN
    DECLARE @objRegex INT, @retstr VARCHAR(8000)

    --创建对象
    EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT

    --设置属性
    EXEC sp_OASetProperty @objRegex, 'Pattern', @pattern
    EXEC sp_OASetProperty @objRegex, 'IgnoreCase', @IgnoreCase
    EXEC sp_OASetProperty @objRegex, 'Global', 1

    --执行
    EXEC sp_OAMethod @objRegex, 'Replace', @retstr OUT, @string, @replacestr

    --释放
    EXECUTE sp_OADestroy @objRegex

    RETURN @retstr
END
GO

--针对这里,可以:
SELECT dbo.RegexReplace([value],'[A-Z]',' $&',0) from tb

 

如果一个字符串中出现WTO,UFO这样的字,第一种方案的判断会很麻烦,而第二种只要改成

SELECT  dbo.RegexReplace('HelloWorldUFO', '([a-z])([A-Z])', '$1 $2',0)就可以了。

(该示例取处CSDN:http://topic.csdn.net/u/20110127/10/47c2d7ea-7878-4de0-bc29-ae9654cec894.html)

0
0
分享到:
评论

相关推荐

    SQL 字符处理

    ### SQL 字符处理:筛选仅含数字的字段记录 在进行数据库操作时,经常会遇到需要对数据中的某些字段进行特定条件筛选的需求。例如,在给定的示例中,我们需要找到某个字段(`remarks`)中仅包含数字的所有记录。...

    SQL 字符串处理函数

    SQL 字符串处理函数 获取指定的字符

    SQL 特殊字符处理

    SQL 中特殊字符处理,处理在模糊查寻中特殊字符的替换

    SQL字符串处理函数大全

    SQL字符串处理函数大全

    SQL Server查询中的特殊字符处理(C#代码)

    为了解决上述问题,我们可以编写一个函数,该函数接收一个字符串作为输入,并返回一个经过特殊字符处理后的字符串,使其可以安全地用于SQL查询中。以下是一个示例实现: ```csharp using System.Text; public ...

    SQL Server查询中的特殊字符处理

    总结起来,理解并正确处理SQL Server查询中的特殊字符是编写高效且无误的查询的关键。熟悉这些特殊字符的用法和转义规则,能够帮助开发者编写出更加精确和灵活的查询语句,提高数据检索的效率和准确性。

    sql字符串处理函数

    根据提供的文件信息,我们可以归纳总结出一系列关于SQL字符串处理函数的知识点。这些函数在数据库管理和数据操作中扮演着重要的角色,能够帮助用户高效地完成字符串的处理任务。 ### ASCII() ASCII()函数用于获取...

    ABAP字符串SQL Functions语法总结

    接下来,我们将深入探讨几种常用的ABAP SQL字符串函数: 1. `CONCAT(arg1, arg2)`: 这个函数用于连接两个字符串`arg1`和`arg2`。它会忽略尾部空格,并且结果的最大长度为1333个字符。例如: ```abap SELECT matnr,...

    SQL字符串操作

    SQL 字符串操作是 T-SQL 中的一组功能强大且灵活的字符串处理函数,它可以处理数值型数据和字符型数据。这些函数可以截取和修改字符串的值,转换和手机字符串相关信息,以及执行 SOUNDEX 分析。在本文中,我们将详细...

    Oracle_Sql_中常用字符串处理函数

    Oracle Sql 中常用字符串处理函数 Oracle Sql 中提供了多种字符串处理函数,用于对字符串进行各种操作,如大小写转换、截取、连接、查找、替换等。下面是 Oracle Sql 中常用的字符串处理函数: 1. 大小写转换函数 ...

    sql中循环控制 SQL中json字符串处理.txt

    sql中while循环控制,不需要获取数据到程序语言中处理。 SQL中直接进行json格式字符串处理,省掉数据库和程序直接的调用

    SQL字符串分割

    ### SQL字符串分割技术详解 在数据库管理与查询中,经常遇到需要将一个包含多个值的字符串字段分割成多个单独字段的情况。这种需求在处理CSV数据、解析复合字段或执行复杂的数据清洗任务时尤为常见。本文将详细介绍...

    SQL Server字符串处理函数大全

    SQL Server字符串处理函数大全 sql server是一个数据库,文档介绍了这个数据库的字符串操作函数

    SqlServer类似正则表达式的字符处理问题

    SQL Serve提供了简单的字符模糊匹配功能,比如:like, patindex,不过对于某些字符处理场景还显得并不足够,日常碰到的几个问题有: 1. 同一个字符/字符串,出现了多少次 2. 同一个字符,第N次出现的位置 3. 多个...

    sql 字符串处理大全

    ### SQL字符串处理函数 #### 1. 字符串截取与修剪 ##### LEFT `LEFT()` 函数用于返回指定表达式的左部字符。语法如下: ```sql LEFT(, ) ``` 其中,`character_expression` 是需要操作的字符串表达式,`integer_...

    SQL字符串处理

    以下是一些关于SQL字符串处理的基本知识点: 首先,我们要明白,在SQL查询中,我们不能直接使用像`IndexOf()`这样的非SQL标准函数。例如,在SQL Server中,应该使用`CHARINDEX()`来替代`IndexOf()`来查找字符串中的...

    SQL语句中设置多个字符串

    在SQL(Structured Query Language)中,处理多个字符串的检索是常见的需求,特别是在数据查询和分析时。本实例将深入探讨如何在SQL语句中设置多个字符串条件,这对于初学者掌握数据库操作至关重要。 首先,让我们...

Global site tag (gtag.js) - Google Analytics