有一字段包含数字和字符串,当是数字时,就通过嵌套语句读取另一表中对应的字符串,如果是字符串,那么就返回原字符串。数据库例子如下:
Country表
id name
1 50
2 中国Show表id name
50 美国
想让Country表显示如下:
id name
1 美国
2 中国
Country表
id name
1 50
2 中国Show表id name
50 美国
想让Country表显示如下:
id name
1 美国
2 中国
解决方案 »
- 把一台sqlserver数据库表按时插入到另一台数据库表中,请前辈指点!
- 查询销售订单的送货情况-不用游标怎么做?
- 求教动太导入 access 过程
- 求备份指定查询结果到文件的SQL语句(急)
- 在局域网里连接其它SQL服务器,建立连接时,时间过长???
- 请教一个查询语句,以另一个表的查询结果当条件来查询。
- 如何根据视图的SQL定义得到视图字段所对应的原始(基本)数据表名???
- 在展开本地数据库里组下一级时弹出SPPI无法打开下文,下面所有数据库就没有显示出来?
- 我就不信,这个也算是难题么?我等一夜都没人回答??
- 怎么将ACCESS2000表中的内容导入到SQLSERVER数据库中
- 怎么在Dreamweaver中连接SQL数据库
- 如果装的是MYSQL,如何使用MDF格式的文件
IF OBJECT_ID('[Country]') IS NOT NULL
DROP TABLE [Country]
GO
CREATE TABLE [Country] ([id] [int],[name] [nvarchar](10))
INSERT INTO [Country]
SELECT '1','50' UNION ALL
SELECT '2','中国'--> 生成测试数据表: [Show]
IF OBJECT_ID('[Show]') IS NOT NULL
DROP TABLE [Show]
GO
CREATE TABLE [Show] ([id] [int],[name] [nvarchar](10))
INSERT INTO [Show]
SELECT '50','美国'--SELECT * FROM [Country]
--SELECT * FROM [Show]-->SQL查询如下:SELECT c.id,
name=CASE ISNUMERIC(c.name)
WHEN 1 THEN s.name
ELSE c.name
END
FROM Country c
LEFT JOIN Show s
ON c.name=LTRIM(s.id)
/*
id name
----------- ----------
1 美国
2 中国(2 行受影响)
*/
union
select a.id,b.name from Country a,show b
where a.name = b.id
--借htl258大哥代码建下表,谢谢哈
IF OBJECT_ID('[Country]') IS NOT NULL
DROP TABLE [Country]
GO
CREATE TABLE [Country] ([id] [int],[name] [nvarchar](10))
INSERT INTO [Country]
SELECT '1','50' UNION ALL
SELECT '2','中国'--> 生成测试数据表: [Show]
IF OBJECT_ID('[Show]') IS NOT NULL
DROP TABLE [Show]
GO
CREATE TABLE [Show] ([id] [int],[name] [nvarchar](10))
INSERT INTO [Show]
SELECT '50','美国'
SELECT id,
CASE WHEN ISNUMERIC(c.name)=1 THEN (SELECT TOP 1 name FROM [Show] WHERE id=CAST(c.name AS INT)) ELSE c.name END AS name
FROM COUNTRY c
id name
----------- ----------
1 美国
2 中国(2 row(s) affected)