Questions tagged «string-searching»

3
当您搜索字符串的中间而不是开头时,这叫什么?
我正在努力提高词汇量,以更好地与开发人员交流。我们在站点中有几个地方要辩论,是否应该从头开始搜索字符串,而不是字符串中的'running%'任何位置'%running%。 我一直称中间搜索为“模糊”,我意识到这是不正确的,因为模糊意味着更改单词“运行”,“运行” [sic],“运行” [sic]的形式。 搜索字符串开头和字符串中间的正确术语是什么?


5
使用“ []”通配符将一个](右方括号)与PATINDEX匹配
我正在T-SQL †中编写自定义JSON解析器。 出于解析器的目的,我使用的PATINDEX功能是从标记列表中计算标记的位置。在我的情况下,标记都是单个字符,它们包括以下这些: {} []:, 通常,当我需要找到几个给定字符中任何一个的(第一个)位置时,我会使用如下PATINDEX函数: PATINDEX('%[abc]%', SourceString) 然后,该函数将为我提供aor b或or 的第一个位置c-两者中最先找到的那个SourceString。 现在,就我而言,问题似乎与]角色有关。一旦在字符列表中指定了它,例如: PATINDEX('%[[]{}:,]%', SourceString) 我的预期模式显然已损坏,因为该函数从未找到匹配项。看来我需要一种方法来转义第一个,]以便PATINDEX将其视为查找字符之一,而不是特殊符号。 我发现这个问题询问类似的问题: 需要LIKE运算符和方括号的帮助 但是,在那种情况下,]根本不需要在方括号中指定简单字符,因为它只是一个字符,可以在不带方括号的情况下进行指定。确实使用转义的替代解决方案仅针对LIKE而不适用PATINDEX,因为它使用了ESCAPE由前者而非后者支持的子句。 所以,我的问题是,有没有什么办法去寻找一个]与PATINDEX使用[ ]通配符?还是有一种方法可以使用其他Transact-SQL工具来模拟该功能? 附加信息 这是我需要PATINDEX与上述[…]模式一起使用的查询示例。这里的模式有效(尽管有点),因为它不包含]字符。我也需要使用它]: WITH data AS (SELECT CAST('{"f1":["v1","v2"],"f2":"v3"}' AS varchar(max)) AS ResponseJSON), parser AS ( SELECT Level = 1, OpenClose = 1, P = p.P, S = SUBSTRING(d.ResponseJSON, 1, NULLIF(p.P, 0) …

2
为charindex函数分割/存储长字符串的最快方法
我有一个1 TB的数字字符串。给定一个12个字符的数字序列,我想在原始字符串(charindex函数)中获得该序列的开始位置。 我已经使用SQL Server使用1GB字符串和9位子字符串测试了此字符串,并将该字符串存储为varchar(max)。Charindex需要10秒。将1GB的字符串分成900个字节的重叠块,并创建一个表(StartPositionOfChunk,Chunkofstring),该表的二进制排序规则中使用chunkofstring,建立索引所需的时间不到1秒。10GB的后一种方法是10个数字子串,将charindex升至1.5分钟。我想找到一种更快的存储方法。 例 字符串:0123456789-搜索345 charindex('345','0123456789')的子字符串得出4 方法1:现在,我可以将其存储在由一列组成的SQL Server表strtable中colstr并执行: select charindex('345',colstr) from strtable 方法2:或者我可以通过拆分原始字符串来组成表strtable2(pos,colstr1):1; 012 | 2; 123 | 3; 234 aso,然后我们可以进行查询 select pos from strtable2 where colstr1='345' 方法3:我可以通过将原始字符串分成较大的块1; 01234 |来组成表strtable2(pos2,colstr2)。4; 34567 | 7; 6789然后 select pos2+charindex('345',colstr2) from strtable2 where colstr2 like '%345%' 第一种方法最慢。 第二种方法炸毁了数据库的存储容量! 方法3:在二进制排序规则中,将colstr2长度设置为900字节,在此列上创建索引需要1秒的时间来进行1GB字符串和9位数字子字符串的搜索。对于10GB的字符串和10位的子字符串,ist需要90秒。 还有其他想法如何使它更快(也许通过利用包含长整数的数字组成的字符串,....)? SQL Server 2017 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.