数据表其中一个字段的值如“11.22.33”类型,我想把“11”取出来,如何截取字符串并获得该值?谢谢

 我来答
匿名用户
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 行记录)
追问
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 的写法, 那自然要出错的。
szm341
2013-04-24 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5149万
展开全部
假设字符为变量@a
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是什么关系~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
慕容爱qL
2013-04-24 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:117万
展开全部
这个语句你这样写
select left((select c1 from t1),charindex('.',select c1 from t1)-1) from table
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
thain0
2013-04-24 · TA获得超过267个赞
知道小有建树答主
回答量:597
采纳率:0%
帮助的人:528万
展开全部
left(字段,2)
追问
我表述有问题,字段不一定只是两个,是不定长的。。我需要取第一个点前面的值。麻烦了。
追答
left(字段,instr(字段, '.') - 1)就可以
instr查找首个点出现的位置
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式