- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试提取 ###x###
, ###x##
,有时 #x#
.有时数字和 x 之间可能有一个空格。本质上,我可能会遇到像这样的字符串
PATINDEX()
找到模式
'%[0-9]%x%[0-9]%'
的第一次出现.到现在为止还挺好。然后我使用
PATINDEX()
之后找到非数字字符串的第一次出现。这是我遇到麻烦的地方。我得到的结果如截图所示。代码也在下面。
SELECT *
,CASE WHEN StartInt > 0
THEN SUBSTRING(Placement, StartInt, SizeLength) ELSE NULL END AS PlacementSize
FROM
(SELECT Placement
--find the first occurrence of #*x*#
,PATINDEX('%[0-9]%x%[0-9]%',Placement) AS StartInt
--find the first non-digit after that
,PATINDEX(
'%[^0-9]%'
,RIGHT(
Placement + '_' --this underscore adds at least one non-digit to find
,LEN(Placement)
-
PATINDEX('%[0-9]%x%[0-9]%',Placement) - 5
)
) + 6 AS SizeLength
FROM [Staging].[Client].[A01_FY14_Reporting_staging]
WHERE [Date] > '2014-07-01') AS a
最佳答案
如果您正在处理一对数值,但也在处理脏数据,并且缺乏 Regex 的功能,那么您可以在 TSQL 中执行以下操作。
从本质上讲,您似乎想在 'x' 处将字符串分成两半,然后减少输出,直到只有数字值。使用一组派生表,这变得相对容易(并且不难阅读)
declare @placements table (Placement varchar(10))
insert into @placements values
('720x60'),
('720x600'),
('720 x 60'),
('720_x_60'),
('1x1')
SELECT LEFT(LeftOfX,PATINDEX('%[^0-9]%',LeftOfX) - 1) + 'x' + RIGHT(RightOfX, LEN(RightOfX) - PATINDEX('%[0-9]%', RightOfX) + 1)
FROM (
SELECT RIGHT(LeftOfX, LEN(LeftOfX) - PATINDEX('%[0-9]%', LeftOfX) + 1) AS LeftOfX, LEFT(RightOfX, LEN(RightOfX) - PATINDEX('%[0-9]%', REVERSE(RightOfX)) + 1) AS RightOfX
FROM (
SELECT LEFT(p.Placement,x) AS LeftOfX, RIGHT(p.Placement,LEN(p.Placement) - x + 1) AS RightOfX
FROM (
SELECT
p.Placement
, CHARINDEX('x',p.Placement) AS x
FROM @placements p
) p
) p
) p
关于sql - 使用 SQL PATINDEX 提取字符串,不同大小的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25811534/
有类似的问题,但我一直无法找到这个特定案例的答案。 我正在尝试对列执行替换,以便将任何类型的括号内的任何内容替换为硬编码字符串。 例如字符串 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 感兴趣,但它们可能有不同的长度。
我是一名优秀的程序员,十分优秀!