SELECT REPLACE('<strong>100</strong><b>.00 GB', '%^(^-?\d*\.{0,1}\d+$)%', '');
我想用上面的正则表达式替换数字的两个部分之间的任何标记,但它似乎不起作用.我不确定它是否是正则表达式语法是错误的,因为我尝试了更简单的一个,例如'%[^0-9]%'只是为了测试,但它也没有用.有谁知道我怎么能做到这一点?
如何使用SQL Server返回包含非ASCII字符的行?
如果你能展示如何为一个列做这件事会很棒.  
我现在正在做这样的事情,但它没有用
select *
from Staging.APARMRE1 as ar
where ar.Line like '%[^!-~ ]%'
对于额外的功劳,如果它可以跨越表中的所有 varchar列,那将是非常出色的!在这个解决方案中,返回三列是很好的:
 Id | FieldName | InvalidText       |
----+-----------+-------------------+
 25 | LastName  | Solís             |
 56 | FirstName | François          |
100 | Address1  | 123 Ümlaut street |
无效字符可以是SPACE(32 10)到~(127 10)范围之外的任何字符
我的表中有以下值:
ABC
ABC1
ABC2
ABC3 and so on...
ABC11
ABC12
ABC13 and so on..
ABC20
ABC21
ABC22 and so on..
所以基本上我所拥有的是任何字符串值(不总是ABC,任何字符串值),可以跟随数字,也可以只是没有数字的字符串.
当我通过我的列asc从表顺序中选择*时,我得到以下结果:
ABC
ABC1
ABC11
ABC12
ABC13
ABC2
ABC20
ABC21
ABC22
ABC3
ABC31
ABC32
我需要用数字排序:
ABC
ABC1
ABC2
ABC3
ABC11
ABC12
ABC13
ABC20
ABC21
ABC22
ABC31
ABC32
如何实现这一目标?
我正在SQLite中排序歌曲(在Android上).我想订购它们:
我有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 …有谁知道如何从字符串中以大写字母开头分割单词?
例:
    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
预期结果:
    Col1                Col2
    OneTwoThreeFour     One Two three Four
    OneTwoThreeFourFive One Two Three Four Five
    One                 One
如果这是不可能的(或者如果太长),标量函数也可以.
我想复制新列中的所有行,并用 - 替换所有特殊字符.我的代码如下.
我的桌子设计
 
   
 select * from mycode
    UPDATE mycode
    SET newName = Replace(myname, '%[^0-9a-zA-Z]%', '-')
它正在使用我的代码进行复制,但不会替换特殊字符
结果

我varchar在SQL Server数据库中有一个字段,它以多种不同的方式存储电话号码,但它们本质上都是电话号码.
例子:
8181234564
(818) 123 4564
818 - 123 - 4567
我希望我可以使用正则表达式删除所有非数字字符,然后执行类似或"="...我可以这样做吗?
忘了提一下:我只有读取权限.
我有一张桌子:
| id | lastname | firstname |
|  1 | doe      | john      |
|  2 | oman     | donald    |
|  3 | o'neill  | james     |
|  4 | onackers | sharon    |
基本上,用户将使用姓氏的第一个字母进行搜索.
我希望能够从数据库返回包含和不包含标点符号的结果.例如,当用户搜索: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
我很确定更换部件必须位于LIKE的另一侧.我弄乱了结构,但需要一些帮助.
我正在使用MSSQL Server 2005. …
我无法替换特殊字符.你能帮帮我吗?
我的意见是:
Mrs?Montero
输出应该是:
Mrs Montero
特殊字符未正确显示.请看下面的图片.
 
我有一个复杂的嵌套替换,我用它来连接 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
我这样做的全部原因是因为 Table1 中的数据包含一些噪音- 数字,如1160、1162等,而 Table2 是干净的字符。
Eg. - Table 1 - 'HELLO1160WORLD'
      Table 2 - 'HELLOWORLD'
现在,在我的情况下,我应该能够将它们作为一个条目进行匹配。
我目前的嵌套替换方法确实有效,但我不相信这是一种优雅的方法。任何帮助都感激不尽。谢谢
当我在 sql 中调用查询时,我想删除所有非数字字符。我有函数,在函数中我这样做:
Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^0-9]%'
While PatIndex(@KeepValues, @Temp) > 0
    Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')
但现在我想用查询(选择)来做。我试过了,但这不起作用
select substring(AdrTelefon1, PatIndex('%[^0-9]%', AdrTelefon1), 2000) from test
编辑 我有! 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
我有 04532/97 并且在此查询之后我有 04532 但我需要 0453297
如何只2用1字符串替换(12 | 2) & 23 | 4 & 25 | (6 | 7).但不希望更换2它们中12,23,25...
因为我不知道,有多少2是字符串.所以我只想替换2.
我尝试使用replace子句但它取代了所有2.
所以在更换时出现问题2.
例如:如果sql列的值为sa,123k,并且输出应前三个字符,即sak
字母和任何特殊字符都需要消除,并且只能得到三个字符。我们如何做到这一点 ?