数据表其中一个字段的值如“11.22.33”类型,我想把“11”取出来,如何截取字符串并获得该值?谢谢
4个回答
2013-04-24
展开全部
Oracle:
-- 没有直接的函数.
CREATE table test (a varchar(100));
insert into test values('test.abc.oracle.com.cn');
-- 获取第一个.
SELECT
SUBSTR(a, 1, INSTR (a, '.') -1 ) AS Result
FROM
test;
RESULT
---------
test
SQL Server
-- 没有直接的函数.
CREATE table test (a varchar(100));
insert into test values('test.abc.oracle.com.cn');
-- 获取第一个.
SELECT
LEFT(a, CHARINDEX ('.', a) -1 ) AS Result
FROM
test;
Result
------------------
test
(1 行受影响)
MySQL
有现成函数
SELECT SUBSTRING_INDEX('www.mysql.com', '.', 1);
即可。
PostgreSQL
有现成的函数
split_part(string text, delimiter text, field int)
根据 delimiter 分隔 string 返回生成的第 field 个子字串(一为基)。
这里传参数2, 是获取第2个, 要第一个, 就穿参数=1即可。
Test=# SELECT split_part('www.mysql.com', '.', 2);
split_part
------------
mysql
(1 行记录)
-- 没有直接的函数.
CREATE table test (a varchar(100));
insert into test values('test.abc.oracle.com.cn');
-- 获取第一个.
SELECT
SUBSTR(a, 1, INSTR (a, '.') -1 ) AS Result
FROM
test;
RESULT
---------
test
SQL Server
-- 没有直接的函数.
CREATE table test (a varchar(100));
insert into test values('test.abc.oracle.com.cn');
-- 获取第一个.
SELECT
LEFT(a, CHARINDEX ('.', a) -1 ) AS Result
FROM
test;
Result
------------------
test
(1 行受影响)
MySQL
有现成函数
SELECT SUBSTRING_INDEX('www.mysql.com', '.', 1);
即可。
PostgreSQL
有现成的函数
split_part(string text, delimiter text, field int)
根据 delimiter 分隔 string 返回生成的第 field 个子字串(一为基)。
这里传参数2, 是获取第2个, 要第一个, 就穿参数=1即可。
Test=# SELECT split_part('www.mysql.com', '.', 2);
split_part
------------
mysql
(1 行记录)
追问
SELECT SUBSTR (select C890900286
from t304, 1, INSTR (select C890900286 from t304, '.') - 1) AS Result
FROM t304;
在substr(select出告诉我缺少表达式?咋回事呢
追答
你什么数据库啊?
我上面列出来 Oracle , SQL Server, MySQL , PostgreSql 四种数据库的不同的写法。
如果你是 SQL Server 数据库的, 复制 Oracle 的写法, 那自然要出错的。
展开全部
假设字符为变量@a
select left(@a,charindex('.',@a)-1)
select left(@a,charindex('.',@a)-1)
追问
比如@a是一个查询语句 select c1 from t1的情况,我的sql语句就是:
select left(select c1 from t1,charindex('.',select c1 from t1)-1) from table ?有报错啊。能再给你细说一下吗?麻烦了。
追答
select left(c1,charindex('.',c1)-1) from t1
这个t1跟你和后面的table是什么关系~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个语句你这样写
select left((select c1 from t1),charindex('.',select c1 from t1)-1) from table
select left((select c1 from t1),charindex('.',select c1 from t1)-1) from table
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
left(字段,2)
追问
我表述有问题,字段不一定只是两个,是不定长的。。我需要取第一个点前面的值。麻烦了。
追答
left(字段,instr(字段, '.') - 1)就可以
instr查找首个点出现的位置
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询