![]() |
1
198
第一种方法是间接地将逗号替换为空字符串并比较长度。
|
![]() |
2
62
CMSJR答案的快速扩展,适用于多个字符的字符串。
用途:
|
![]() |
3
17
可以将字符串长度与删除逗号的字符串长度进行比较:
|
![]() |
4
4
@csmjr的答案在某些情况下有问题。 他的回答是:
但是,这在大多数情况下都有效,请尝试运行:
出于某种原因,replace去掉了最后一个逗号,也去掉了前面的空格(不知道为什么)。当期望值为4时,返回值为5。还有一种方法可以做到这一点,即使在这种特殊情况下也可以做到:
请注意,您不需要使用星号。任何两个字符的替换都可以。这样做的目的是,对于要计数的字符的每个实例,将字符串加长一个字符,然后减去原始字符的长度。这基本上是与原始答案相反的方法,而不是带有奇怪的修剪副作用。 |
![]() |
5
3
基于@andrew的解决方案,使用非过程表值函数和交叉应用可以获得更好的性能:
|
![]() |
6
2
|
![]() |
7
1
接受的答案是正确的, 将其扩展为在子字符串中使用2个或更多字符:
|
![]() |
8
0
|
![]() |
9
0
我认为达雷尔李有一个很好的答案。替换
比如说你用这个
你为什么要做这种疯狂的事? 假设您正在将分隔文本字符串加载到临时表中,其中包含数据的字段类似于varchar(8000)或nvarchar(max)… 有时,用数据而不是ETL(提取转换加载)进行ELT(提取加载转换)比用数据进行ELT(提取转换加载)更容易/更快,一种方法是将分隔的记录按原样加载到临时表中,特别是如果您可能希望使用更简单的方法来查看异常记录,而不是将它们作为SSIS包的一部分来处理……但这是一个神圣的任务。R代表不同的线。 |
![]() |
10
0
下面应该为单字符和多字符搜索提供技巧:
可以使用数字表(dbo.nums)将函数简化一点:
|
![]() |
11
0
如果我们知道长度和空间有限制,为什么不能先替换空间呢? 那么我们就知道没有空间来迷惑len了。
|
![]() |
12
0
使用这个代码,它工作得很好。 我已经创建了一个接受两个参数的SQL函数,第一个参数是我们要搜索的长字符串,它可以接受长度达1500个字符的字符串(当然,您可以扩展它,甚至将其更改为文本数据类型)。 第二个参数是我们要计算它发生的次数的子字符串(它的长度可达200个字符,当然您可以将其更改为您需要的值)。输出是一个整数,代表频率的数目……尽情享受吧。
|
![]() |
13
0
我最后编写了这个函数,它应该涵盖所有可能的情况,在输入中添加一个字符前缀和后缀。此字符的计算结果与搜索参数中包含的任何字符都不同,因此它不会影响结果。
使用
|
![]() |
14
-1
可以使用以下存储过程获取、值。
|
![]() |
15
-1
replace/len测试很可爱,但可能效率很低(特别是在内存方面)。 一个带有循环的简单函数就可以完成这项工作。
|
![]() |
16
-3
也许您不应该这样存储数据。在字段中存储逗号分隔的列表是一种糟糕的做法。查询效率非常低。这应该是一个相关的表。 |
![]() |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 2 年前 |
![]() |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
![]() |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
![]() |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |