sql字符串连接函数
例如表a:idvalue111111111122222222223333333333表b:iddata911-11111-111022-22222-221133-3333...
例如 表 a:id value1 1111111112 2222222223 333333333 表 b:id data9 11-11111-1110 22-22222-2211 33-33333-33 现在想做的就是查询出value中值不等于data的全部数据:select * from a where value not in (select b from data); 碰见的问题就是两个字段中存储的格式不一样 就是多了两个- 那上面的语句就失效了现在想把value字段统一成(11-11111-11)这种格式再进行比较 因为后面还需要用到此格式 请各位大侠帮忙
展开
推荐于2017-12-16 · 知道合伙人教育行家
关注
展开全部
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CONCAT()只允许两个参数;
换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。
来看几个例子。假设我们有以下的表格:
Geography 表格
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
例子1:
MySQL/Oracle:
SELECT CONCAT(region_name,store_name) FROM Geography
WHERE store_name = 'Boston';
结果:
'EastBoston'
例子2:
Oracle:
SELECT region_name || ' ' || store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'
例子3:
SQL Server:
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'
Oracle: CONCAT(), ||
SQL Server: +
CONCAT() 的语法如下:
CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。
请注意,Oracle的CONCAT()只允许两个参数;
换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。
来看几个例子。假设我们有以下的表格:
Geography 表格
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
例子1:
MySQL/Oracle:
SELECT CONCAT(region_name,store_name) FROM Geography
WHERE store_name = 'Boston';
结果:
'EastBoston'
例子2:
Oracle:
SELECT region_name || ' ' || store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'
例子3:
SQL Server:
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';
结果:
'East Boston'
2013-03-28
展开全部
如果只是变成11-11111-11这样,那很简单select * from a where substring(value,1,2) + '-' + substring(value,3,5) + '-' + substring(value,8,2)not in (select b from data);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-28
展开全部
select *
from a
where (SUBSTR(value, 0, 2) || '-' || SUBSTR(value, 2, 5) || '-' ||
SUBSTR(value, 8, 9)) not in (select b from data);
或者直接更新valueupdate a set value=(SUBSTR(value, 0, 2) || '-' || SUBSTR(value, 2, 5) || '-' ||
SUBSTR(value, 8, 9));
如果不是ORACLE 的话SUBSTR 换成SUBSTRING ,||换成+
from a
where (SUBSTR(value, 0, 2) || '-' || SUBSTR(value, 2, 5) || '-' ||
SUBSTR(value, 8, 9)) not in (select b from data);
或者直接更新valueupdate a set value=(SUBSTR(value, 0, 2) || '-' || SUBSTR(value, 2, 5) || '-' ||
SUBSTR(value, 8, 9));
如果不是ORACLE 的话SUBSTR 换成SUBSTRING ,||换成+
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from a where LEFT(value,2)+'-'+substring(value,3,5)+'-'+right(value,2) not in (select DATA from B)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-28
展开全部
REPLACE(b.DATE,'_','')然后比较更好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |