使用函数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有什么差别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)