回答
SELECT RIGHT(column, 3)
这就是你需要的。
您也可以用同样的方法做LEFT()
。
请记住,如果您在WHERE
子句中使用此项,RIGHT()
不能使用任何索引。
你可以用任何一种方式:
SELECT RIGHT(RTRIM(columnName), 3)
OR
SELECT SUBSTRING(columnName, LEN(columnName)-2, 3)
一种优势比另一种更有优势吗? RTRIM是否必要(对我来说似乎是多余的)? – noelicus
这项工作可以通过几种方式完成,在这里我已经通过两种常见方式进行了展示。第一种情况比第二种情况快。 RTRIM不是强制性的。它仅用于在右侧省略任何额外的空间。谢谢 –
因为更多的途径来想一想总是好的:
select reverse(substring(reverse(columnName), 1, 3))
不,更多并不总是更好。 –
你说得对。你将永远拥有你所需要的所有工具来完成你想要做的任何工作。我想,知识并不等于权力。 –
我不确定这是什么意思。您提出的解决方案不必要的复杂,并且没有任何情况可能是正确的解决方案。因此,这很糟糕。 –
declare @newdata varchar(30)
set @newdata='IDS_ENUM_Change_262147_190'
select REVERSE(substring(reverse(@newdata),0,charindex('_',reverse(@newdata))))
===说明===
我发现它更易于阅读这样写的:
SELECT
REVERSE(--4.
SUBSTRING(-- 3.
REVERSE(<field_name>),
0,
CHARINDEX(-- 2.
'<your char of choice>',
REVERSE(<field_name>) -- 1.
)
)
)
FROM
<table_name>
- 反向文本
- 寻找具有特异性字符的第一次出现(即第一次出现FROM文本的结尾)。获取此char的索引
- 再次查看反转文本。从索引0到char的索引搜索。这给了你正在寻找的字符串,但在反向
- 反转反转字符串给你你想要的子
,如果你想找到具体的字符串与期望的字母结尾那么这将帮助你..
select * from tablename where col_name like '%190'
这不回答这个问题。 OP想知道如何获得最后3个字符,不管它们是什么,也不是像190这样的特定字符串。 – BradleyDotNET
- 1. 如何匹配TSQL中字符串的最后一个字符?
- 2. zabbix - 字符串的最后3个值
- 3. 获取字符串中的最后一个子字符串?
- 4. Python中删除字符串的最后3个字符
- 5. 删除最后一个子字符串
- 6. 删除字符串的最后3个字母[:-3]
- 7. 最后一个字符串
- 8. tsql子串或字符串操作
- 9. SQL子字符串 - 删除最后一个字符
- 10. 字符串的第一个字符和最后一个字符
- 11. 从字符串中删除前3个字符和后3个字符PHP
- 12. 动态删除最后一个字符串后/从字符串
- 13. 替换字符串中最后出现的子字符串
- 14. 获取字符串中最后一个子串索引后的字符
- 15. TSQL删除连接字符串中的最后一个逗号
- 16. 在字符'?'之后从字符串中获取最后一个字符串
- 17. 将字符串拆分为3个子字符串jquery/javascript
- 18. PHP子串到字符串中的最后一个数字
- 19. cout:最后一个字符串覆盖第一个字符串
- 20. 检索最后一个子字符串和路径中的最后一个子字符串
- 21. 字符串中最后一个数字
- 22. TSQL Where子句中查询字符串
- 23. 可变长度TSQL子字符串
- 24. 查找字符串中的所有3个字符长度的子字符串
- 25. 一个字符串的最后3个字符的Ruby正则表达式
- 26. 正则表达式来获得一个字符串的最后3个字符
- 27. SQL子字符串和最后索引
- 28. 删除字符串中最后一个空格后的最后一个字符
- 29. 字符串:提取最后六个字符后的最后一个/
- 30. 放弃最后3个字符
如果您*要*以这种方式搜索大量数据,那么*是一种恢复索引使用的方法。创建一个计算列,该列是相反顺序的字符串。那么什么是正确的(最不重要的)三个字符现在是左边的(最重要的)三个字符。然后,您将该列索引并查找“WHERE LEFT(反向,3)= REVERSE('190')'。 (我很无聊,你能告诉吗?) – MatBailie
谢谢你们! – Jared