日期:2014-05-19  浏览次数:20464 次

判断字符串中是否有子串
判断字符串中是否有子串,另外必须是第一个位置开始



------解决方案--------------------
CHARINDEX( '12 ', '123 ')=1
------解决方案--------------------
charindex()
------解决方案--------------------
charindex( '子串 ', '字符串 ') = 1
------解决方案--------------------
判断字符串中是否有子串,另外必须是第一个位置开始

1 where field like 'abc% '
2 where left(field,3)= 'abc '
3 where CHARINDEX( 'abc ',field)=1

------解决方案--------------------
patindex
------解决方案--------------------
CREATE TABLE T
(
NAME VARCHAR(100)
)

INSERT INTO T
SELECT '123456 ' UNION ALL
SELECT '7891256 ' UNION ALL
SELECT '41256 ' UNION ALL
SELECT '4785 '

SELECT * FROM T
WHERE PATINDEX( '%12% ',NAME)> =1


NAME
----------------------------------------------------------------
123456
7891256
41256

(3 row(s) affected)


------解决方案--------------------
PATINDEX like 两者效率谁高啊
------解决方案--------------------
charindex() 和 patindex()也不知哪個 效率高

但有一點,charindex()不能用於text數據類型
而 patindex()可以的
所以呢,還是使用patindex()比較好
------解决方案--------------------
100分,我也来
patindex( '%12% ', '123 ')

------解决方案--------------------
CHARINDEX ( expression1 , expression2 [ , start_location ] )

参数
expression1

一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。

expression2

一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。

start_location

在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。

------解决方案--------------------
charindex( '子串 ', '字符串 ') = 1