T-SQL子串 - 最后3个字符

Jar*_*red 61 sql t-sql sql-server sql-server-2005

使用T-SQL,我将如何获取varchar列的最后3个字符?

所以列文本是IDS_ENUM_Change_262147_190我需要的190

JNK*_*JNK 102

SELECT RIGHT(column, 3)
Run Code Online (Sandbox Code Playgroud)

这就是你所需要的.

你也可以LEFT()用同样的方式做.

请记住,如果您在不能使用任何索引的WHERE子句中RIGHT()使用它.

  • 如果你*以这种方式搜索大量数据,那么*就是一种恢复索引使用的方法.创建一个计算列,该列是相反顺序的字符串.那么正确的(最不重要的)三个字符现在是左(最重要的)三个字符.然后,您索引该列并查找"WHERE LEFT(reverse,3)= REVERSE('190')`.(我很无聊,你能说出来吗?) (8认同)

Eli*_*ain 17

您可以使用以下任一方式:

SELECT RIGHT(RTRIM(columnName), 3)
Run Code Online (Sandbox Code Playgroud)

要么

SELECT SUBSTRING(columnName, LEN(columnName)-2, 3)
Run Code Online (Sandbox Code Playgroud)


Ben*_*hul 7

因为考虑它的更多方法总是好的:

select reverse(substring(reverse(columnName), 1, 3))
Run Code Online (Sandbox Code Playgroud)

  • 关于软件开发性质的扩展和我在行业中明显缺乏资格并不是本论坛的相关主题,所以我不打算在这里解决它们.Downvotes表示答案在某种程度上是错误的或"坏的".你的答案很糟糕,因为它是*不必要的*复杂的; 一个答案会增加两个或四个以上的"反向"调用作为一个额外的答案是好的,因为它与你的答案不同?如果我加密和未加密字符串呢?你说任意无用的复杂性在某种程度上不是一个考虑因素. (4认同)
  • 欢迎来到软件开发的世界,在这里“简单”并不总是可能的。如果您判断解决方案是否正确的标准之一是它是否复杂,那么您就错了。我是说考虑到上述问题我会使用这个解决方案吗?不。我的意思是,看到多种解决方案是有价值的,因为它可以拓宽您的视野,让您了解现有的情况。也许OP在此之前不知道反向功能。现在他/她做到了。我对这里的否决票的看法是,它们应该保留给明显不正确的解决方案。矿山工程 (3认同)