问题标签 [patindex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
466 浏览

sql - 为什么使用 PATINDEX 替换某些特殊字符会失败?

我们正在尝试使用下面的(简化的)命令从字符串中去除某些特殊字符,这是我们在搜索后看到的最常见的解决方案。但是,使用某些特殊字符时结果不一致。谁能解释为什么?而且,更好的是,任何人都可以提供有效的解决方案吗?

SQL Server 2014

在下面的第一种情况下,“@”被删除,但在包含它的所有其他情况下 (2+5),它不会被删除。第三种情况相同:删除空格,但不删除 '&'; 在第 5 种情况下,空格被删除,但不是“@”。其他组合也有类似的问题。

谢谢。声明 @str varchar(50) = '1st Ave @ 1st St FL-3 Rm 323& New York NY'

0 投票
3 回答
214 浏览

sql - SQL Server 2008 Standard - 传递给 LEFT 或 SUBSTRING 函数的长度参数无效

有很多同名的问题,但我认为我的案例比表面上看到的要多。

这是我的查询:

这给了我“传递给 LEFT 或 SUBSTRING 函数的无效长度参数”。错误。


信息:VOPTIONS 值类似于:#0110##02120#

这是我尝试过的:

  1. 认为有一个有问题的 VOPTIONS 在正确的位置没有“#02”部分或根本没有,我SUBSTRING(SALI.VOPTIONS, 4, PATINDEX('%#02%', SALI.VOPTIONS) - 5)从 SELECT 和 GROUP BY 中注释掉了,并AND PATINDEX('%#02%', SALI.VOPTIONS) < 5在 WHERE 子句中添加了一个以查找返回小于 5 的 PATINDEX 值的 VOPTIONS 会导致负值。这应该至少返回一条 VOPTIONS 损坏的记录,但它没有返回任何内容。

  2. 我尝试在给定的 where 子句中选择所有 VOPTIONS 并一一检查。他们都检查得很好。

  3. 一件更有趣的事情是,如果我在这一行中更改为<- <=>AND SALI.PRODDATE < '2017-07-02'查询有效。扩大日期范围会使错误消失,这对我来说没有任何意义。

谁能看到我在这里缺少的东西?

编辑:由选项卡分隔的数据(只是更改了客户名称):https ://pastebin.com/kE8ViWu4

0 投票
1 回答
80 浏览

sql - SQL中的子字符串与来自模式

我正在努力对子字符串进行子字符串化并获取 SQL 中的值。

我有一个 JSON 字符串,如下所示:

或者也可以是这样的:

现在,我需要从其中任何一个那里获取具有特定“FieldName”的特定“CustomFieldId”的“FieldValue”,并且该 FieldValue 以特定字符串开头。

就像,我会得到这些:

因此,在这种特殊情况下,我需要使用 CustomFieldId:"20", FieldName":"TEST1234" 以及 FieldValue 以“Some”开头的自定义字段的 FieldValue。

输出只需要字符串“Sometest”,因为这是 CustomFieldId 的 FieldValue:"20"

对此的任何帮助将不胜感激。

0 投票
0 回答
151 浏览

sql-server - 如何避免抛出(选择案例何时)- 需要大量时间的案例

我必须使用银行对账单,这意味着我必须使用大字符串并将其切割成小部分,以便能够订购它所属的账单的每一行。到目前为止,一切都很好。问题是PATINDEXCHARINDEX并且substring需要大量时间处理“大数据”。例如,我在银行对账单中有 100 行(字符串),我必须能够将每一行排序到正确的账单。在这 100 行中,有 90% 的非常简单的案例并不真正花费时间,因为它是一个简单的子字符串工作。但是对于剩下的 10%,有很多工作需要时间。我的问题是,即使我选择所有 SQL 代码都花费相同时间的情况,以防我有 100% 的行非常复杂,甚至只有 5%。这意味着对于每一行,将评估整个代码,然后做出正确的决定,这正是我的问题。

我怎样才能避免这种情况?

现在,当我的数据是 4000 行时,其中大部分都是“莎拉”,这与我的数据只有“bla”一样需要很多时间。这意味着无论哪种情况,每次都会评估所有案例,然后决定哪个案例是正确的。还是我在这里错过了什么?

0 投票
3 回答
1318 浏览

sql - SQL - 从井号 (#) 符号后的字符串中获取数字

我试图从 SQL Server 2012 中的字符串中获取数字,该字符串位于井号 (#) 符号之后和后面的任何空格之前。例如,商店号码。假设我们有以下内容:

我将返回以下内容:450、768、2、678、5、559、32、67、12、1047、3、17、16。

如您所见,并非所有字符串的最后都有数字。其中一些甚至在商店名称中带有数字字符。我认为解决这个问题的最好方法就是提取井号后面的数字。

有没有办法做到这一点?我看过以下文章:

查询以仅从字符串中获取数字

https://www.sqlservercentral.com/Forums/Topic456023-338-1.aspx

看起来PATINDEX可能很好用,但我不确定到目前为止我所尝试的并没有返回预期的结果。

非常感谢!

0 投票
2 回答
999 浏览

sql-server - TSQL 使用 SUBSTRING PATINDEX 和 STUFF 修改数据

TSQL MSSQL 2008r2

我需要帮助来修改数据。我已经走了这么远,现在我需要帮助。

样本数据

[编辑] 添加了其他示例

我想像这样显示数据。如果NCHAR(9999)或铅笔存在并且接下来的 3 个字符是字母,则slash在第三个字符后添加 (/)。如果添加后存在任何其他字符,slash则将其删除。所以对于 [AA11✏AAA ZZZZ] 应该更新为 [AA11✏AAA/]。

如果NCHAR(9999)存在且前 4 个字符之前有字符,则删除它们。因此,对于 [CRAP BB22✏BBB] 应更新为 [BB22✏BBB/] 对于 [NONSENSE] 应显示为NULL

预期的

这是我所得到的。如您所见,我坚持添加slash和删除不需要的字符。

0 投票
1 回答
1468 浏览

sql - SQL循环查找数据库字段中所有出现的字符串表达式

varchar(max)在 SQL Server DB 表中有一个字段,我想在该字段中找到所有出现的字符串,并在任一侧查找 50 个字符,以便在阅读时为其提供上下文。

我已经使用下面的代码完成了这项工作,但现在我想对其进行调整,使其适用于所有出现的字符串,并使其出现在一个字段中。

这会返回'As Harry squelched along the deserted corridor he came acros',但我希望它返回:

我猜这可以使用循环来完成,但我以前从未真正使用过循环,因此非常感谢任何帮助。

提前致谢

0 投票
1 回答
34 浏览

loops - 需要帮助从 CASE WHEN 中删除功能

我有一种情况,我创建了脚本来在我们公司的环境中选择数据。为此,我决定在 CASE WHEN 中使用函数进行一些模式匹配和字符剥离。

但是,我们的一位客户不想让我们将他们的数据放在本地环境中,所以我现在需要按摩脚本才能在他们的环境中运行——本质上意味着我需要删除这些功能,而且我在考虑如何移动东西来做到这一点时遇到了麻烦。

函数调用的一个示例是:

wherePrp是包含属性类型SerialNumber的列,是包含序列号的列,还有一些其他随机垃圾,因为数据输入很草率。

函数定义为:

我要经过的地方@strText在哪里。SerialNumber

我可能会陷入分析瘫痪,因为我只是想不出一个好方法来做到这一点。我不需要一个完整的解决方案,也许只是给我指出一个你知道会起作用的方向。让我知道您是否想要一些示例 DDL/DML 来解决问题。

示例“序列号”值:CA100 (Trash bins)T110101B。还有一堆其他类型的值,例如所有文本或所有数字,但我们正在过滤掉它们。当前的图案匹配已经足够好了。

0 投票
1 回答
25 浏览

sql - 如何使用子字符串从这些数字中放置日期

如何提取这些数字的日期(20060807)

0 投票
1 回答
132 浏览

sql - 在 SQL 中使用字母数字和纯字母值对字母数字列进行排序

我有一个要求,我必须按字母数字列在 SQL 查询中应用排序,以便其中的值按如下方式排序:

而不是默认方式:

我能够编写以下 SQL 语句:

我只需要知道如何以有条件的方式实现它,这样它就不会因为仅 alpha 的值而被触发,否则它会给出错误,或者是否有办法让它与它一起工作?

PS环境是SQL Server 2014。