Как вставить несколько строк БЕЗ повторяющихся символов & ldquo; INSERT INTO dbo.Blah & rdquo; часть заявления?

Я думаю, вы должны использовать что-то вроде этого, и оно называется Upcasting:

public int multiplyBy2(int x) throws ArithmeticException {
    long result = 2 * (long) x;    
    if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE){
        throw new ArithmeticException("Integer overflow");
    }
    return (int) result;
}

Здесь вы можете прочитать далее: Обнаружение или предотвращение переполнения целого числа

Это довольно надежный источник.

504
задан Robert Harvey 21 June 2016 в 19:11
поделиться

7 ответов

INSERT INTO dbo.MyTable (ID, Name)
SELECT 123, 'Timmy'
UNION ALL
SELECT 124, 'Jonny'
UNION ALL
SELECT 125, 'Sally'

Для SQL Server 2008 это возможно в одном предложении VALUES ровно в соответствии с утверждением в вашем вопросе (вам просто нужно добавить запятую, чтобы отделить каждый оператор значений) ...

323
ответ дан 22 November 2019 в 22:31
поделиться

Вы можете использовать объединение:

INSERT INTO dbo.MyTable (ID, Name) 
SELECT ID, Name FROM (
    SELECT 123, 'Timmy'
    UNION ALL
    SELECT 124, 'Jonny'
    UNION ALL
    SELECT 125, 'Sally'
) AS X (ID, Name)
8
ответ дан 22 November 2019 в 22:31
поделиться

Это выглядит нормально для SQL Server 2008. Для SS2005 и более ранних версий вам нужно повторить оператор VALUES.

INSERT INTO dbo.MyTable (ID, Name)  
VALUES (123, 'Timmy')  
VALUES (124, 'Jonny')   
VALUES (125, 'Sally')  

РЕДАКТИРОВАТЬ :: Моя плохая. Вы должны повторить «INSERT INTO» для каждой строки в SS2005.

INSERT INTO dbo.MyTable (ID, Name)  
VALUES (123, 'Timmy')  
INSERT INTO dbo.MyTable (ID, Name)  
VALUES (124, 'Jonny')   
INSERT INTO dbo.MyTable (ID, Name)  
VALUES (125, 'Sally')  
6
ответ дан 22 November 2019 в 22:31
поделиться

Если ваши данные уже находятся в вашей базе данных, вы можете сделать:

INSERT INTO MyTable(ID, Name)
SELECT ID, NAME FROM OtherTable

Если вам нужно жестко закодировать данные, то SQL 2008 и более поздние версии позволяют вам сделать следующее...

INSERT INTO MyTable (Name, ID)
VALUES ('First',1),
('Second',2),
('Third',3),
('Fourth',4),
('Fifth',5)
234
ответ дан 22 November 2019 в 22:31
поделиться

Вы можете сделать это (уродливо, но работает):

INSERT INTO dbo.MyTable (ID, Name) 
select * from
(
 select 123, 'Timmy'
  union all
 select 124, 'Jonny' 
  union all
 select 125, 'Sally'
 ...
) x
14
ответ дан 22 November 2019 в 22:31
поделиться

Ваш синтаксис почти работает в SQL Server 2008 (но не в SQL Server 2005 1 ):

CREATE TABLE MyTable (id int, name char(10));

INSERT INTO MyTable (id, name) VALUES (1, 'Bob'), (2, 'Peter'), (3, 'Joe');

SELECT * FROM MyTable;

id |  name
---+---------
1  |  Bob       
2  |  Peter     
3  |  Joe       

1 Когда был дан ответ на вопрос, не было очевидно, что вопрос имел в виду в SQL Server 2005. Я оставляю этот ответ здесь, поскольку считаю, что он по-прежнему актуален.

495
ответ дан 22 November 2019 в 22:31
поделиться

Соответствующий INSERT (Transact-SQL) (SQL Server 2005) вы не можете опустить INSERT INTO dbo.Blah и должны указывать его каждый раз или использовать другой синтаксис/подход,

5
ответ дан 22 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: