- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 Dats
的字符串,它是一般外观 xxxx-nnnnn
之一(其中 x
是一个字符, >n
是一个数字)或nnn-nnnnnn
。
我只想返回数字。
为此我尝试过:
SELECT Distinct dats,
Left(SubString(artikelnr, PatIndex('%[0-9.-]%', artikelnr), 8000), PatIndex('%[^0-9.-]%', SubString(artikelnr, PatIndex('%[0-9.-]%', artikelnr), 8000) + 'X')-1)
FROM ThatDatabase
这几乎就是我想要的。它会删除常规字符 x
,但不会删除 unicode 字符 -
。我怎样才能删除这个呢?而且,每行都有两个 PatIndex
函数似乎效率很低,有没有办法避免这种情况? (这将用于大型数据库,其中该查询的结果将用作键)。
编辑:更新为新数据库有时包含额外的 -
或 .
以及 -
。
DECLARE @T as table
(
dats nvarchar(10)
)
INSERT INTO @T VALUES
('111BWA30'),
('115-200-11')
('115-22.4-1')
('10.000.22')
('600F-FFF200')
最佳答案
我不确定您是否也需要 -
字符之前的数字,但如果您需要,这里有一种方法:
创建并填充示例表(请在您以后的问题中保存此步骤)
DECLARE @T as table
(
dats nvarchar(10)
)
INSERT INTO @T VALUES
('abcde-1234'),
('23-343')
查询:
SELECT dats,
case when patindex('%[^0-9]-[0-9]%', dats) > 0 then
right(dats, len(dats) - patindex('%-[0-9]%', dats))
else
stuff(dats, charindex('-', dats), 1, '')
end As NumbersOnly
FROM @T
结果:
dats NumbersOnly
abcde-1234 1234
23-343 23343
如果您只想要 -
字符右侧的数字,则更简单:
SELECT dats,
right(dats, len(dats) - patindex('%-[0-9]%', dats)) As RightNumbersOnly
FROM @T
结果:
dats RightNumbersOnly
abcde-1234 1234
23-343 343
关于sql-server - patindex 和 unicode 字符 '-' 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42222026/
有类似的问题,但我一直无法找到这个特定案例的答案。 我正在尝试对列执行替换,以便将任何类型的括号内的任何内容替换为硬编码字符串。 例如字符串 012345[678]将更改为 012345[XXXXX]
我有许多不同类型的字符串,但它们都遵循两种相同的模式: ABC123-S-XYZ789 ABC123-P-XYZ789 问题 1: 我知道如何提取第一部分:ABC123 但是我如何提取第二部分???
我有一个业务层调用,其工作方式如下: CustomerRepository.Get(c => SqlFunctions.PatIndex("%" + arg + "%", c.FirstName));
我需要在表达式中使用 SqlFunctions.PatIndex。 Func, KendoFilterDescription, IQueryable> appendFilter =
我试图弄清楚如何使用 patindex 来查找一系列字母字符,但排除重音字符。如果我直接搜索,使用默认整理(不敏感)就可以了。但是,当我搜索一系列字母时,它将匹配重音字符 SELECT IIF
如何检查字符串中是否存在!@#$%^&*()_-+特殊字符? 我试过了 SELECT PATINDEX('!@#$%^&*()_-+', 'test-'); SELECT PATINDEX('[!@
我正在使用 patindex 进行“MD”或“DO”的模式搜索。以下语句返回 3。我是否以错误的方式使用它,或者是否有其他检查条件的方法? select PATINDEX ('%[MD,DO]%','
我有一个查询如下(简化)... SELECT * FROM table1 AS a INNER JOIN table2 AS b ON (a.name LIKE '%' + b.n
我有以下查询: select [Service Item Value], SUBSTRING ( [Service Item Value], PATINDEX('%[3][C]
如何检查字符串中是否存在!@#$%^&*()_-+特殊字符? 我试过了 SELECT PATINDEX('!@#$%^&*()_-+', 'test-'); SELECT PATINDEX('[!@
我一直在存储过程中使用 CHARINDEX 来检查 NVARCHAR(MAX) 类型的变量,但今天我发现 CHARINDEX有 8,000 字节的限制! 我找到这篇文章SQL CHARINDEX()
我找到了使用 PATINDEX 查找下划线位置的解决方案: DECLARE @a VARCHAR(10) SET @a = '37_21' PRINT PATINDEX('%_%', @a)
我有 hql 查询: ... WHERE len(p.sms.message) - len(replace(p.sms.message,:message1,'')) = 1 AND PATINDEX(
我需要相当于 SQL 函数的 Postgres patindex 最佳答案 没有与 SQL Server 的 PATINDEX 函数完全等价的函数。您可以根据需要使用其他字符串函数。这是文档:http
我正在转换一个 sql server 脚本,我需要在 MYSQL 中转换 PATINDEX()。你能建议哪个MYSQL函数类似于PATINDEX() 最佳答案 REGEXP_INSTR功能与 PatI
1、测试环境: 1。数据库:Sql Server 2008 2。测试表:15000记录,char类型主键,无其他索引 3。测试字段:ntext 类型,最大数据长度12000 2、测试语句:
我正在尝试提取 ###x### , ###x## ,有时 #x# .有时数字和 x 之间可能有一个空格。本质上,我可能会遇到像这样的字符串 720x60 720x600 720 x 60 720_x_
我正在尝试验证 NANP 格式的电话号码。 我正在使用这个代码 patindex('+1[2–9][0-9][0-9][2–9][0-9][0-9][0-9][0-9][0-9][0-9]', n)
我注意到 SQL Server 上的 PATINDEX(我使用的是 2016)给出了奇怪的结果。我怀疑这与排序规则和字符集有关。 我正在尝试使用 PATINDEX 获取第一个空格或连字符的索引。 在具
我正在寻找从一些 varchar 中提取 float ,使用 PATINDEX() 来发现它们。我知道在每个 varchar 字符串中,我只对存在的第一个 float 感兴趣,但它们可能有不同的长度。
我是一名优秀的程序员,十分优秀!