当前位置: 代码迷 >> Sql Server >> 怎么查询出D临近的数据,2到3位就可以———————急———————急············
  详细解决方案

怎么查询出D临近的数据,2到3位就可以———————急———————急············

热度:96   发布时间:2016-04-27 11:21:05.0
如何查询出D临近的数据,2到3位就可以———————急———————急············
SQL code
--我要查询出【库存表】里面的【库存代码】字段为【abc】临近的数据信息,每页只显示100条;方便查询--···我表里有1W条数据--···比如说 abcdefgh 我要查D临近的,2到3位就可以了;包括D在其中!--显示结果如下:--···第一种显示结果:bcDef--···第二种显示结果:abcDefg


------解决方案--------------------
不懂 等高僧解决
------解决方案--------------------
照你的意思,直接用like就可以实现了
------解决方案--------------------
SQL code
DECLARE @t VARCHAR(30)SET @t='abcdefgh'SELECT SUBSTRING(@t,CHARINDEX('d',@t)-2,CHARINDEX('d',@t)+1)SELECT SUBSTRING(@t,CHARINDEX('d',@t)-3,CHARINDEX('d',@t)+3)
------解决方案--------------------
看了叶子的回答才知道什么意思。
------解决方案--------------------
SQL code
--> 测试数据:[tb]IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]GO CREATE TABLE [tb]([name] VARCHAR(50))INSERT [tb]SELECT 'abcaaaa' UNION ALLSELECT 'abcdefghzzz' UNION ALLSELECT 'xxooabcdfghfhfgh' UNION ALLSELECT 'xxacdfg' UNION ALLSELECT 'ooabcd'--------------开始查询--------------------------DECLARE @str VARCHAR(50),@rand INT SET @str='abcd'SET @rand=3 SELECT NAME,第一种=SUBSTRING(NAME,CHARINDEX(@str,name)+1,CASE WHEN LEN(NAME)-CHARINDEX(@str,name)[email protected]<=LEN(@str) THEN LEN(@str) ELSE LEN(NAME)-CHARINDEX(@str,name)[email protected] END), 第二种=SUBSTRING(NAME,CHARINDEX(@str,name),CASE WHEN LEN(NAME)-CHARINDEX(@str,name)[email protected]<=LEN(@str) THEN LEN(@str) ELSE LEN(NAME)-CHARINDEX(@str,name)[email protected] END)FROM [tb] WHERE CHARINDEX(@str,name)>0----------------结果----------------------------/* NAME                                               第一种                                                第二种-------------------------------------------------- -------------------------------------------------- --------------------------------------------------abcdefghzzz                                        bcdefgh                                            abcdefgxxooabcdfghfhfgh                                   bcdfghfh                                           abcdfghfooabcd                                             bcd                                                abcd(3 行受影响)*/
------解决方案--------------------
charindex判断长度
substring截取
------解决方案--------------------
like %_D_%
like %__D__%
------解决方案--------------------
探讨

like %_D_%
like %__D__%

------解决方案--------------------
SQL code
like '__' + '某字符' + '__'       -->此处2条下划线(_)like '___' + '某字符' + '___'    -->此处3条下划线(_)
------解决方案--------------------
SQL code
 like 在语句中很耗性能,建议尽量少的适用like. 用嫂子的不错。[img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif][/img]
------解决方案--------------------
探讨
SQL code
--> 测试数据:[tb]
IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
GO
CREATE TABLE [tb]([name] VARCHAR(50))
INSERT [tb]
SELECT 'abcaaaa' UNION ALL
SELECT 'abcdefghzzz' UNION ALL
SELECT '……
  相关解决方案