描述
返回某字符串在另一字符串中第一次出现的位置。
语法
InStr([start,
]string1, string2[, compare])
InStr 函数的语法有以下参数:
参数 描述
start
可选。数值表达式,用于设置每次搜索的开始位置。如果省略,将从第一个字符的位置开始搜索。如果 start 包含
Null,则会出现错误。如果已指定 compare,则必须要有 start 参数。
string1
必选。接受搜索的字符串表达式。
string2 必选。要搜索的字符串表达式。
compare
可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,将执行二进制比较。
设置
compare 参数可以有以下值:
常数 值 描述
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1
执行文本比较。
返回值
InStr 函数返回以下值:
如果 InStr 返回
string1 为零长度 0
string1 为
Null Null
string2 为零长度 start
string2 为
Null Null
string2 没有找到 0
在 string1
中找到 string2 找到匹配字符串的位置
start > Len(string2) 0
说明
下面的示例利用 InStr 搜索字符串:
Dim SearchString, SearchChar, MyPos
SearchString
="XXpXXpXXPXXP" ' 要在其中搜索的字符串。
SearchChar = "P"
' 搜索 "P"。
'文本比较从第四个字符开始返回
6。
MyPos = Instr(4, SearchString, SearchChar, 1)
'二进制比较从第1个字符开始返回 9。
MyPos =
Instr(1, SearchString, SearchChar, 0)
'
缺省为二进制比较(最后一个参数省略)。
MyPos = Instr(SearchString,
SearchChar) ' 返回 9。
'
二进制比较从第1个字符开始返回 0 (没有找到 "W")。
MyPos = Instr(1,
SearchString, "W")
--------------------------------------------------------------------------------
注意 InStrB 函数使用包含在字符串中的字节数据,所以 InStrB
返回的不是一个字符串在另一个字符串中第一次出现的字符位置,而是字节位置。
CHARINDEX
返回字符串中指定表达式的起始位置。
语法
CHARINDEX ( expression1 , expression2 [ , start_location ] )
参数
expression1
一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。
start_location
在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。
返回类型
int
注释
如果 expression1 或 expression2 之一属于 Unicode 数据类型(nvarchar 或 nchar)而另一个不属于,则将另一个转换为 Unicode 数据类型。
如果 expression1 或 expression2 之一为 NULL 值,则当数据库兼容级别为 70 或更大时,CHARINDEX 返回 NULL 值。当数据库兼容级别为 65 或更小时,CHARINDEX 仅在 expression1 和 expression2 都为 NULL 时返回 NULL 值。
如果在 expression2 内没有找到 expression1,则 CHARINDEX 返回 0。
示例
第一个代码示例返回序列"wonderful"在 titles 表的 notes 列中开始的位置。第二个示例使用可选的 start_location 参数从 notes 列的第五个字符开始寻找"wonderful"。第三个示例显示了当 expression2 内找不到 expression1 时的结果集。
USE pubs
GO
SELECT CHARINDEX('wonderful', notes)
FROM titles
WHERE title_id = 'TC3218'
GO
-- Use the optional start_location parameter to start searching
-- for wonderful starting with the fifth character in the notes
-- column.
USE pubs
GO
SELECT CHARINDEX('wonderful', notes, 5)
FROM titles
WHERE title_id = 'TC3218'
GO
下面是第一个查询和第二个查询的结果集:
-----------
46
(1 row(s) affected)
USE pubs
GO
SELECT CHARINDEX('wondrous', notes)
FROM titles
WHERE title_id='TC3218'
GO
下面是结果集。
-----------
0
(1 row(s) affected)
分享到:
相关推荐
虽然可以使用CHARINDEX函数或PATINDEX函数来实现类似的功能,但它们的使用方法和Instr函数有所不同。 在SQL Server数据库中,Instr函数不可用是因为该函数不符合SQL Server的语法规则。SQL Server数据库使用...
sql :charindex(‘字符串’,字段)>0 charindex(‘administrator’,MUserID)>0 oracle:instr(字段,’字符串’,1,1) >0 instr(MUserID,’administrator’,1,1)>0 在项目中用到了Oracle中 Instr 这个函数,顺便仔细的...
- **Oracle**: Oracle 中没有直接对应的函数,通常使用 `INSTR` 函数配合正则表达式功能。 - 示例:`SELECT INSTR('sdsfasdqe', 'sd', 1, 2) AS Value FROM DUAL;` #### 字符串截取 - **SQL Server**: 使用 `...
- **SQL Server**: 使用`CHARINDEX()`函数。 - **Oracle**: 使用`INSTR()`函数,提供更灵活的搜索选项。 14. **模式匹配查找** - **SQL Server**: 使用`PATINDEX()`函数进行模式匹配。 - **Oracle**: 使用`...
- SQLServer中使用`CHARINDEX()`函数。 - Oracle中使用`INSTR()`函数。 通过以上对比,我们可以看到,尽管SQLServer和Oracle在某些函数的命名上存在差异,但大多数函数的功能是相似的,主要区别在于语法细节和...
### SQLServer和Oracle常用函数对比 本文将详细探讨在SQLServer与Oracle数据库系统中常用的数学函数及字符串处理函数之间的差异。对于数据分析师、数据库管理员以及软件开发者而言,掌握这两种数据库管理系统之间的...
- **子串位置**:SQL Server 使用 `CHARINDEX()`,Oracle 使用 `INSTR()`。 这些函数的使用和语法差异,使得在跨数据库系统进行开发时需要了解各自的特点,以便正确地编写查询和存储过程。了解这些区别对于数据库...
- SQL Server使用`CHARINDEX`函数,Oracle使用`INSTR`函数。 - 示例:SQL Server中`SELECT CHARINDEX('s', 'sdsq', 2)`;Oracle中`SELECT INSTR('sdsq', 's', 2) FROM DUAL`。 26. **模式匹配定位** - SQL ...
### SQLServer和Oracle常用函数对比 本文将对SQLServer与Oracle数据库系统中常用的数学与字符串处理函数进行详细的对比分析。通过具体的示例和解释,帮助读者更好地理解两种数据库管理系统在处理相似需求时的不同...
通过以上对比,我们可以看出SQLServer和Oracle在提供基本数学函数和字符串处理功能方面非常相似,但具体语法上存在细微差别。对于开发人员来说,在选择使用这些函数时需要根据具体的数据库环境来决定使用哪种语法。...
- Oracle使用`SUBSTR`、`INSTR`和`REPLACE`,SQL Server则对应为`SUBSTRING`、`CHARINDEX`和`REPLACE`。 - Oracle的`REGEXP_LIKE`支持正则表达式匹配,SQL Server则需使用`PATINDEX`和`LIKE`组合,或引入`fn_split...
- **SQL Server**: 使用`CHARINDEX`函数,如:`SELECT CHARINDEX('s', 'sdsq', 2) AS Value` - **Oracle**: 使用`INSTR`函数,如:`SELECT INSTR('sdsq', 's', 2) AS Value FROM DUAL` #### 25. 子串提取 - **SQL ...
本文将重点对比Oracle和SQL Server中的系统函数,特别是字符函数、日期函数和转换函数,并讨论这些函数在两个平台之间的异同。 #### 字符函数 字符函数用于对字符串进行操作,包括但不限于字符串的连接、转换大小...
这里我们将详细探讨 Oracle 内部函数及其与 SQL Server 的等价函数,主要集中在字符函数、日期函数和转换函数。 1. **字符函数** - `ASCII`: 在 Oracle 和 SQL Server 中,`ASCII` 函数都用于将字符转换为对应的 ...
- **子串位置**:SQL Server 使用 `CHARINDEX()`,Oracle 用 `INSTR()`。 以上只是部分常用函数的对比,实际上,SQL Server 和 Oracle 还有许多其他函数,如日期时间函数、聚合函数、转换函数等,它们各自都有独特...