日期:2014-05-17  浏览次数:20420 次

如何查询出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 ALL
SELECT 'abcdefghzzz' UNION ALL
SELECT 'xxooabcdfghfhfgh' UNION ALL
SELECT 'xxacdfg' UNION ALL
SELECT '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)-@rand<=LEN(@str) THEN LEN(@str) ELSE LEN(NAME)-CHARINDEX(@str,name)-@rand END), 
第二种=SUBSTRING(NAME,CHARINDEX(@str,name),CASE WHEN LEN(NAME)-CHARINDEX(@str,name)-@rand<=LEN(@str) THEN LEN(@str) ELSE LEN(NAME)-CHARINDEX(@str,name)-@rand END)
FROM [tb] WHERE CHARINDEX(@str,name)>0
----------------结果----------------------------
/* 
NAME                                               第一种                                                第二种
-------------------------------------------------- -------------------------------------------------- --------------------------------------------------
abcdefghzzz                                        bcdefgh                                            abcdefg
xxooabcdfghfhfgh                                   bcdfghfh                                           abcdfghf
ooabcd                                             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 '……