数据库的字符串处理利器之SUBSTRING_INDEX()

数据库的字符串处理利器之SUBSTRING_INDEX(),第1张

使用函数SUBSTRING_INDEX()根据指定分隔符切割,分隔符可以是字符串等。

语法 :substring_index(str,delim,count)

说明 :

str:被截取字符串

delim:分隔符,截取时依据的关键字,区分大小写

count:从第几个分隔符开始截取

count如果为正数,则返回第count个分隔符左侧的所有内容(从左到右截取);如果为负数,则返回第count个分隔符右侧的所有内容(从右到左截取)。

例:

(1)如果count是正数,那么就是从左往右数,第N个 分隔符 的左边的全部内容

(2) 相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,

(3)取中间的某个值

从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边:

primary 是主键 这个就是表的主键了,唯一的不能重复出现 index 是索引 索引就如同书的目录 unique 是唯一约束 标识数据库表中的每条记录 fulltext 全文索引 一个 FULLTEXT 类型索引 spatial 空间索引 这个跟GIS有关

index on to <文件名>:建立独立索引,生成一个指定文件名的IDX文件,打开时用:set index to 索引文件名

index on tag <索引标识>,建立复合索引,生成一个与表同名的CDX文件,打开时用:set ORDE to 索引标识

另外,独立索引在表更新时,需要打开,索引才能更新,复合索引无需打开索引,索引自动更新。

TAG是索引标识,可以任意取名,为了记忆方便,取字段名为好。如:

INDEX ON 姓名 TAG 姓名

&&&&&&&&&&&&&&&&

补充说明:

&&&&&&&&&&&&&&&&

instr(字段,'#',1,2)

函数查找字段中从第1位开始,第2个#位置。

substr(字段,1,查出的位置-1)

截取你想要的

字符串

&&&&&&&&&&&&&&&&&

select

substr(字段,1,instr(字段,'#',1,2))

from

表名;

测试log:

[SYS@ora10gr1]

SQL>select

substr('1234#1214124#124141421#',1,instr('1234#1214124#124141421#','#',1,2)-1)

from

dual;

SUBSTR('1234

------------

1234#1214124

[SYS@ora10gr1]

SQL>select

substr('1234#urqosdsdriu#68768#',1,instr('1234#urqosdsdriu#68768#','#',1,2)-1)

from

dual;

SUBSTR('1234#URQ

----------------

1234#urqosdsdriu

---

以上,希望对你有所帮助。

根据表名,查询一张表的索引:select from user_indexes where table_name=upper('表名')。

根据索引号,查询表索引字段:select from user_ind_columns where index_name=('索引名')。

根据索引名,查询创建索引的语句:select dbms_metadataget_ddl('INDEX','索引名', ['用户名']) from dual ; --['用户名']可省,默认为登录用户。

Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统。

删除索引可以使用ALTER TABLE或DROP INDEX语句来实现,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:

DROP INDEX index_name ON talbe_name

ALTER TABLE table_name DROP INDEX index_name

ALTER TABLE table_name DROP PRIMARY KEY

注:其中,前两条语句是等价的,删除掉table_name中的索引index_name。

扩展资料:

索引的使用及注意事项 

EXPLAIN可以帮助开发人员分析SQL问题,explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。

使用方法,在select语句前加上Explain就可以了:Explain select from user where id=1;

尽量避免这些不走索引的sql:

SELECT `sname` FROM `stu` WHERE `age`+10=30;-- 不会使用索引,因为所有索引列参与了计算

SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) <1990; -- 不会使用索引,因为使用了函数运算,原理与上面相同

SELECT FROM `houdunwang` WHERE `uname` LIKE'后盾%' 走索引

SELECT FROM `houdunwang` WHERE `uname` LIKE "%后盾%" 不走索引

正则表达式不使用索引,这应该很好理解,所以为什么在SQL中很难看到regexp关键字的原因。

字符串与数字比较不使用索引;

CREATE TABLE `a` (`a` char(10));

EXPLAIN SELECT FROM `a` WHERE `a`="1" 走索引

EXPLAIN SELECT FROM `a` WHERE `a`=1 不走索引

Hash Global分区索引介绍

HASH-Partitioned Global索引是Oracle 10g开始提供的新特性。而在以前的版本中

,Oracle只支持Range-Partitioned Global索引。HASH-Partitioned Global索引的好处如下:

比Range-Partitioned Global索引易于实施。HASH-Partitioned Global索引是根据

索引字段值,通过Oracle内部的HASH算法自动均匀散列到定义的分区中。而

Range-Partitioned Global索引需要根据索引字段值的范围进行分区,因此实施和

维护的难度都大。

HASH-Partitioned Global索引适合于在并发量、吞吐量很大的交易系统(OLTP)

中,对某些字段的访问冲突。尤其是sequence字段值。

HASH-Partitioned Global索引适合于大批量的数据查询。HASH-Partitioned Global索引不仅可以提供分区之间的并行查询,

而且在分区内也可进行并行查询的处理。

建立分区索引必须指定表空间,并且指定的表空间要与数据表空间分开,

这样便于管理,同时尽可能分开索引和数据的IO访问,提高效率

from askmaclean

以上就是关于数据库的字符串处理利器之SUBSTRING_INDEX()全部的内容,包括:数据库的字符串处理利器之SUBSTRING_INDEX()、mysql 索引index和normal有什么区别、数据库中index on ...to 和index on ...tag有什么差别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9296744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存