SQL Server - 包含多个值

时间:2013-02-05 18:12:09

标签: sql sql-server tsql

我需要使用SELECT检索columm的值。但是,我有多个价值观...... 我不知道用户在复选框中选择了什么...

例如:

Insert Into MyTable (dados) Values ('a1') 
我想要结果= Angulo 1

Insert Into MyTable (dados) Values ('a2';'a3') 
我想要结果= Angulo 2

Insert into MyTable (dados) Values ('a3'; a1) 
我想要结果= Angulo 3; Angulo 1

Insert into MyTable (dados) Values ('a6'; 'a7'; 'a4') 
我想要结果= Angulo 6; Angulo 7; Angulo4


我正在尝试SELECT CASE WHEN。但它仍然失败......

5 个答案:

答案 0 :(得分:0)

当你说:

 insert into MyTable(dados)
    Values ('a6', 'a7', 'a4')

您说“我有一列将数据放入名为dados的数据库中。”然后,您提供三个值。这将在任何数据库中失败(甚至除了分号应该是逗号之外)。

也许你想要:

insert into MyTable(dados)
    Values ('a6;a7;a4')

这只是一个值,一个字符串。

这表明非规范化数据库。您可能希望表中有三个不同的行,每个值一个,通过某个键连接在一起。

答案 1 :(得分:0)

我怀疑您在IN语句中询问如何使用SELECT关键字?有点不清楚你想要做什么。

试试这个:

SELECT * 
FROM MyTable
WHERE dados IN ('a6','a7','a4')

假设你有一个名为MyTable的表和一个名为dados的列,该表在该表中包含3行a6,a7和a4,这将返回所有匹配项(在本例中为所有三行)。

祝你好运。

答案 2 :(得分:0)

如果您使用的是sql server 2008及更高版本,请参阅以下示例:

if(OBJECT_ID('tempdb .. #dados')不为null) DROP TABLE #dados

选择前100名* INTO #dados FROM ( 值(1,2,3),     (4,5,6),     (7,8,9) )t(a,b,c)

选择* FROM #dados

INSERT INTO #dados(a,b,c) 值(11,22,33),     (44,55,66),     (77,88,99)

SELECT * FROM #dados

INSERT INTO #dados(a,b,c) SELECT * FROM ( 值(111222333),     (444555666),     (777888999) )t(a,b,c)

SELECT * FROM #dados

答案 3 :(得分:0)

如果要插入多行(而不是列),则语法为

Insert Into 
MyTable (dados) 
Values 
('a1'), 
('a2')

答案 4 :(得分:0)

看起来你正在尝试要求两件事。

如何插入多个值将按以下方式完成:

Insert Into MyTable (dados) Values ('a6'),('a7'),('a4') 

如果您想要返回实际值'Angulo'+数字,您可以使用以下内容:

CREATE TABLE MyTable 
(
    Dados varchar(255)
)   

Insert Into MyTable (dados) Values ('a12') 
Insert Into MyTable (dados) Values ('a2'),('a3')
Insert Into MyTable (dados) Values ('a3'),('a1') 
Insert Into MyTable (dados) Values ('a6'),('a7'),('a4') 

SELECT 'Angulo'+ SUBSTRING(dados,PATINDEX('%[0-9]%',dados),LEN(dados))
FROM MyTable

它会找到第一个数字(假设它始终是你所追求的第一个数字)并获得其余的数字。然后它将附加前缀'Angulo'(例如Angulo1,Angulo7等)

如果这些不是你想要的。请你能进一步解释你的需求。