相关疑难解决方法(0)

SQL替换函数里面的正则表达式模式?

SELECT REPLACE('<strong>100</strong><b>.00 GB', '%^(^-?\d*\.{0,1}\d+$)%', '');
Run Code Online (Sandbox Code Playgroud)

我想用上面的正则表达式替换数字的两个部分之间的任何标记,但它似乎不起作用.我不确定它是否是正则表达式语法是错误的,因为我尝试了更简单的一个,例如'%[^0-9]%'只是为了测试,但它也没有用.有谁知道我怎么能做到这一点?

regex sql-server

68
推荐指数
4
解决办法
24万
查看次数

使用SQL Server在varchar列中查找非ASCII字符

如何使用SQL Server返回包含非ASCII字符的行?
如果你能展示如何为一个列做这件事会很棒.

我现在正在做这样的事情,但它没有用

select *
from Staging.APARMRE1 as ar
where ar.Line like '%[^!-~ ]%'
Run Code Online (Sandbox Code Playgroud)

对于额外的功劳,如果它可以跨越表中的所有 varchar列,那将是非常出色的!在这个解决方案中,返回三列是很好的:

  • 该记录的标识字段.(这将允许使用另一个查询来审核整个记录.)
  • 列名称
  • 带有无效字符的文本
 Id | FieldName | InvalidText       |
----+-----------+-------------------+
 25 | LastName  | Solís             |
 56 | FirstName | François          |
100 | Address1  | 123 Ümlaut street |
Run Code Online (Sandbox Code Playgroud)

无效字符可以是SPACE(32 10)到~(127 10)范围之外的任何字符

t-sql sql-server sql-server-2005 non-ascii-characters

52
推荐指数
5
解决办法
11万
查看次数

SQL Server 2008 - 按字符顺序排列数字

我的表中有以下值:

ABC
ABC1
ABC2
ABC3 and so on...

ABC11
ABC12
ABC13 and so on..

ABC20
ABC21
ABC22 and so on..
Run Code Online (Sandbox Code Playgroud)

所以基本上我所拥有的是任何字符串值(不总是ABC,任何字符串值),可以跟随数字,也可以只是没有数字的字符串.

当我通过我的列asc从表顺序中选择*时,我得到以下结果:

ABC
ABC1
ABC11
ABC12
ABC13
ABC2
ABC20
ABC21
ABC22
ABC3
ABC31
ABC32
Run Code Online (Sandbox Code Playgroud)

我需要用数字排序:

ABC
ABC1
ABC2
ABC3
ABC11
ABC12
ABC13
ABC20
ABC21
ABC22
ABC31
ABC32
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

sql-server

16
推荐指数
4
解决办法
2万
查看次数

仅在SQLite中按字母数字字符排序

我正在SQLite中排序歌曲(在Android上).我想订购它们:

  1. 不区分大小写
  2. 末尾带有前导数字,按整数值.
  3. 没有标点符号(例如括号,句点,连字符,撇号)

我有1和2工作(见下文).但是,除了要求replace()每个角色之外,我无法弄清楚如何替换除了字母,数字和空格之外的每个字符.

除了~32之外,有没有办法做到这一点replace()
(ASCII值33-47,58-64,91-96,123-126)


这是一张测试表.理想情况下,值'n'应该按顺序出现.(不,你不能订购n;)

create table songs (n integer, name text);
insert into songs (n,name) values (6,'I''ll Be That Girl');
insert into songs (n,name) values (24,'1969');
insert into songs (n,name) values (9,'La Moldau');
insert into songs (n,name) values (20,'Pule');
insert into songs (n,name) values (7,'I''m a Rainbow Too');
insert into songs (n,name) values (21,'5 Years');
insert into songs (n,name) values (18,'Pressure');
insert into songs (n,name) values (13,'Lagan');
insert …
Run Code Online (Sandbox Code Playgroud)

sql sqlite

14
推荐指数
1
解决办法
1516
查看次数

在sql中用大写字母分隔单词

有谁知道如何从字符串中以大写字母开头分割单词?

例:

    DECLARE @var1 varchar(100) = 'OneTwoThreeFour'
    DECLARE @var2 varchar(100) = 'OneTwoThreeFourFive'
    DECLARE @var3 varchar(100) = 'One'

    SELECT @var1 as Col1, <?> as Col2
    SELECT @var2 as Col1, <?> as Col2
    SELECT @var3 as Col1, <?> as Col2
Run Code Online (Sandbox Code Playgroud)

预期结果:

    Col1                Col2
    OneTwoThreeFour     One Two three Four
    OneTwoThreeFourFive One Two Three Four Five
    One                 One
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的(或者如果太长),标量函数也可以.

sql t-sql sql-server

11
推荐指数
1
解决办法
8642
查看次数

在SQL中查找并替换所有特殊字符

我想复制新列中的所有行,并用 - 替换所有特殊字符.我的代码如下.

我的桌子设计

在此输入图像描述

 select * from mycode
    UPDATE mycode
    SET newName = Replace(myname, '%[^0-9a-zA-Z]%', '-')
Run Code Online (Sandbox Code Playgroud)

它正在使用我的代码进行复制,但不会替换特殊字符

结果 在此输入图像描述

sql sql-server sql-server-2008

7
推荐指数
2
解决办法
7万
查看次数

SQL Server查询使用正则表达式?

varchar在SQL Server数据库中有一个字段,它以多种不同的方式存储电话号码,但它们本质上都是电话号码.

例子:

8181234564
(818) 123 4564
818 - 123 - 4567
Run Code Online (Sandbox Code Playgroud)

我希望我可以使用正则表达式删除所有非数字字符,然后执行类似或"="...我可以这样做吗?

忘了提一下:我只有读取权限.

regex sql t-sql sql-server

6
推荐指数
1
解决办法
2989
查看次数

在WHERE子句中使用REPLACE来检查拼写排列 - MS SQL

我有一张桌子:

| id | lastname | firstname |
|  1 | doe      | john      |
|  2 | oman     | donald    |
|  3 | o'neill  | james     |
|  4 | onackers | sharon    |
Run Code Online (Sandbox Code Playgroud)

基本上,用户将使用姓氏的第一个字母进行搜索.

我希望能够从数据库返回包含和不包含标点符号的结果.例如,当用户搜索:on时

我想两个回复: o'neill,onackers

我希望有人能够搜索"o,on,oneill,oill等"来获取o'neill.

因此,执行此操作的最佳方法似乎是使用lastname列值,并在WHERE子句中使用OR搜索它的两个排列.在SQL中用_替换任何特殊字符的地方,以及所有非alpha字符(包括空格)都消失的字符.

我想我可以在SQL替换中使用下划线来保持一个空间可用.

我在使用WHERE子句时遇到了一些麻烦.我宁愿用一个简单的REPLACE来做这个,而不是在可能的情况下创建一个正则表达式函数.如果那是不合适的,我理解:

@last_name (this is the nvarchar input)

SELECT id, lastname, firstname
FROM people
WHERE ((REPLACE(people.lastname, '[^A-Za-z]', '_') like @last_name + '%')
OR (REPLACE(people.lastnname,'[^A-Za-z ]', '') like @last_name + '%'))
ORDER BY lastname
Run Code Online (Sandbox Code Playgroud)

我很确定更换部件必须位于LIKE的另一侧.我弄乱了结构,但需要一些帮助.

我正在使用MSSQL Server 2005. …

sql sql-server replace where-clause

6
推荐指数
1
解决办法
3万
查看次数

sql server用null替换特殊字符

我无法替换特殊字符.你能帮帮我吗?

我的意见是:

Mrs?Montero
Run Code Online (Sandbox Code Playgroud)

输出应该是:

Mrs Montero
Run Code Online (Sandbox Code Playgroud)

特殊字符未正确显示.请看下面的图片. http://i.stack.imgur.com/b2SdY.jpg

sql sql-server netezza

6
推荐指数
1
解决办法
2459
查看次数

SQL 嵌套替换

我有一个复杂的嵌套替换,我用它来连接 MSSQL 中的两个表。

select * from A
  left outer join 
select * from B
on
  replace(
     replace(
        replace(
           replace(
              replace(A.Column1, '1114', ''),
             '1160', ''), 
          '1162', ''),
        '1167', ''),
      '1176', ''),
    '1177', '')  = B.Column1
Run Code Online (Sandbox Code Playgroud)

我这样做的全部原因是因为 Table1 中的数据包含一些噪音- 数字,如11601162等,而 Table2 是干净的字符。

Eg. - Table 1 - 'HELLO1160WORLD'
      Table 2 - 'HELLOWORLD'
Run Code Online (Sandbox Code Playgroud)

现在,在我的情况下,我应该能够将它们作为一个条目进行匹配。

我目前的嵌套替换方法确实有效,但我不相信这是一种优雅的方法。任何帮助都感激不尽。谢谢

sql sql-server

5
推荐指数
1
解决办法
2万
查看次数

删除sql SELECT中的所有非数字字符

当我在 sql 中调用查询时,我想删除所有非数字字符。我有函数,在函数中我这样做:

Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^0-9]%'
While PatIndex(@KeepValues, @Temp) > 0
    Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')
Run Code Online (Sandbox Code Playgroud)

但现在我想用查询(选择)来做。我试过了,但这不起作用

select substring(AdrTelefon1, PatIndex('%[^0-9]%', AdrTelefon1), 2000) from test
Run Code Online (Sandbox Code Playgroud)

编辑 我有! T-SQL 选择查询以删除非数字字符

它不能正常工作

SELECT LEFT(SUBSTRING(AdrTelefon1, PATINDEX('%[0-9]%', AdrTelefon1), 8000),
       PATINDEX('%[^0-9]%', SUBSTRING(AdrTelefon1, PATINDEX('%[0-9]%', AdrTelefon1), 8000) + 'X') -1) from test
Run Code Online (Sandbox Code Playgroud)

我有 04532/97 并且在此查询之后我有 04532 但我需要 0453297

sql t-sql

4
推荐指数
1
解决办法
1万
查看次数

SQL:从字符串中替换特定字符

如何只21字符串替换(12 | 2) & 23 | 4 & 25 | (6 | 7).但不希望更换2它们中12,23,25...

因为我不知道,有多少2是字符串.所以我只想替换2.

我尝试使用replace子句但它取代了所有2.

所以在更换时出现问题2.

sql sql-server sql-server-2008

2
推荐指数
1
解决办法
1895
查看次数

SQL:从sql列值中检索前三个字符

例如:如果sql列的值为sa,123k,并且输出应前三个字符,即sak

字母和任何特殊字符都需要消除,并且只能得到三个字符。我们如何做到这一点 ?

sql sql-server

1
推荐指数
1
解决办法
139
查看次数