首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过遍历SQL Server中的每条记录来检查特定条件?

如何通过遍历SQL Server中的每条记录来检查特定条件?
EN

Stack Overflow用户
提问于 2016-07-25 21:38:15
回答 4查看 76关注 0票数 0

我有下面的桌子

代码语言:javascript
运行
复制
ID  Name 
1   Jagan Mohan Reddy868 
2   Jagan Mohan Reddy869 
3   Jagan Mohan Reddy

名称列大小为VARCHAR(55)

现在,对于其他一些任务,我们只需要10个varchar长度,即VARCHAR(10)

我的要求是检查在仅取名称列值的10位长度之后,例如,如果我取ID为1的名称值,即,如果它等于另一个行值,则Jagan Mohan Reddy868 by SUBSTRING(Name, 0,11)。这里,在本例中,SUBSTRING(Jagan Mohan Reddy868, 0,11)的最终值等于ID3行的name值,该行的名称是'Jagan Mohan Reddy‘。我需要把那些好心的行列出来。有没有人能帮我讲讲如何在SQL Server中实现。

我的主要检查是我的Name列的截断值不应该与Name列的任何非截断值匹配。如果是这样,我需要拿到那些记录。

EN

回答 4

Stack Overflow用户

发布于 2016-07-25 21:57:38

假设我理解了这个问题,我想你正在寻找的东西是这样的:

创建并填充示例数据(请在将来的问题中保存此步骤)。

代码语言:javascript
运行
复制
DECLARE @T as TABLE
(
    Id int identity(1,1),
    Name varchar(15)
)

INSERT INTO @T VALUES
('Hi, I am Zohar.'),
('Hi, I am Peled.'),
('Hi, I am Z'),
('I''m Zohar peled')

使用带有自内联接的cte获取与前10个字符匹配的ids列表:

代码语言:javascript
运行
复制
;WITH cte as
(
    SELECT T2.Id As Id1, T1.Id As Id2
    FROM @T T1
    INNER JOIN @T T2 ON LEFT(T1.Name, 10) = t2.Name AND T1.Id <> T2.Id 
)

从原始表中选择记录,使用cte中的Id1和Id2的联合进行内部联接:

代码语言:javascript
运行
复制
SELECT T.Id, Name
FROM @T T
INNER JOIN
(
    SELECT Id1 As Id
    FROM CTE 
    UNION
    SELECT Id2 
    FROM CTE
) U ON T.Id = U.Id

结果:

代码语言:javascript
运行
复制
Id          Name
----------- ---------------
1           Hi, I am Zohar.
3           Hi, I am Z
票数 1
EN

Stack Overflow用户

发布于 2016-07-25 21:59:49

尝尝这个

代码语言:javascript
运行
复制
SELECT Id,Name
FROM(
     SELECT *,ROW_NUMBER() OVER(PARTITION BY Name, LEFT(Name,11) ORDER BY ID) RN
     FROM Tbale1 T
    ) Tmp
WHERE Tmp.RN = 1
票数 0
EN

Stack Overflow用户

发布于 2016-07-25 22:08:13

循环遍历所有值的列,并将substring()函数放入此循环中,我认为在Sql中,字符串的索引从1而不是0开始。如果将字符串传递给charindex(),如下所示

代码语言:javascript
运行
复制
 CHARINDEX('Y', 'Your String')

这样你就会知道它是从0还是1开始,你可以将你的子字符串的值保存为长度为10的其他列的值

我希望它能帮助你..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38569301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档