Tôi muốn thay đổi một cột trong SQL Server từ kiểu int, để nhập văn bản, trong khi vẫn duy trì tên cột. Bảng với cột này có rất nhiều dữ liệu và tôi không muốn mất nó. SQL Server dường như không hỗ trợ các phôi tiềm ẩn hoặc rõ ràng từ int đến văn bản, nếu không điều này sẽ khá đơn giản. Vì vậy, làm thế nào bạn sẽ làm điều đó bằng cách sử dụng chỉ SQL?Trong cột SQL Server thay đổi kiểu int để nhập văn bản
Trả lời
Vì MS SQL Server (giống như hầu hết các cơ sở dữ liệu) không hỗ trợ trực tiếp thay đổi loại cột hiện tại, bạn sẽ phải thực hiện theo các bước. Con đường tôi đã giải quyết vấn đề như thế này trong quá khứ được (giả sử bảng của bạn được đặt tên là 'foo' và cột của bạn được đặt tên là 'bar'):
ALTER TABLE foo ADD COLUMN tempbar text;
UPDATE foo SET tempbar = cast(cast(bar as varchar) as text);
ALTER TABLE foo DROP COLUMN bar;
ALTER TABLE foo ADD COLUMN bar text;
UPDATE foo SET bar = tempbar;
ALTER TABLE foo DROP COLUMN tempbar;
(Một số cú pháp SQL có thể được tắt, nó được một năm kể từ lần cuối cùng tôi làm điều này, tại một công việc khác, vì vậy tôi không có quyền truy cập vào MS SQL Server hoặc nguồn. Bạn cũng sẽ phải làm nhiều thứ hơn nếu cột của bạn có chỉ mục trên đó.)
Đạo cụ để Donnie cho cú pháp chuyển đổi.
[Chỉnh sửa]
Tom H. đề nghị sử dụng các thủ tục lưu trữ sp_rename để đổi tên tempbar
như bar
(thay vì bước 4-6). Đó là một giải pháp MS SQL Server cụ thể có thể làm việc trong nhiều trường hợp. Giải pháp tôi mô tả sẽ hoạt động (với các sửa đổi cú pháp) trên bất kỳ cơ sở dữ liệu SQL nào, bất kể phiên bản. Trong trường hợp của tôi, tôi đã xử lý các khóa chính và khóa ngoài, và không chỉ là một trường duy nhất, vì vậy tôi đã phải đặt hàng cẩn thận tất cả các thao tác và di chuyển trên nhiều phiên bản của MS SQL Server.
Thay vì thả, thêm lại, và sau đó điền thanh, bạn chỉ có thể thả nó và đổi tên tempbar. –
sp_rename sẽ không hoạt động trong Sql CE. – Edgar
Chỉ cần truyền hai lần thông qua loại trung gian theo ý bạn muốn.
cast(cast(intField as varchar) as text)
Dưới đây là một kịch bản mẫu nhỏ mà hiển thị trên phương pháp có thể:
create table test (id int)
create table test_tmp (id ntext)
insert into test
values (1)
insert into test
values (2)
insert into test_tmp
select convert(ntext,cast(id as nvarchar)) from test
drop table test
exec sp_rename 'test_tmp','test'
Về cơ bản chúng ta tạo ra một bản sao của bảng, sau đó cư nó. Đầu tiên chúng ta chuyển đổi int thành nvarchar sau đó chúng ta lấy một giá trị văn bản. Cuối cùng, chúng ta thả bảng cũ và đổi tên bảng tạm thời.
- 1. Thay đổi kiểu UIKeyboardType dựa trên kiểu nhập văn bản
- 2. Cách xoay cột văn bản trong SQL Server?
- 3. Thay đổi cột khóa chính trong SQL Server
- 4. SQL Server để chuyển đổi kiểu Net
- 5. Thay đổi nội dung kích thước cột trong SQL Server
- 6. Làm cách nào để thay đổi tên cột SQL Server trong T-SQL?
- 7. Thay đổi tên cột trong SQL Server 2008
- 8. Chuyển đổi giữa văn bản và varchar (MAX) trong SQL Server
- 9. jQuery - trên văn bản nhập thay đổi
- 10. Thay đổi kiểu nhập khi văn bản được nhập chỉ sử dụng CSS
- 11. Đổi tên cột trong SQL Server
- 12. Làm cách nào để nhập kiểu văn bản khi nhập?
- 13. SQL Server: Arithmetic lỗi tràn bộ chuyển đổi biểu thức để kiểu dữ liệu int
- 14. Nhận kiểu dữ liệu của cột SQL Server bằng C#
- 15. Cách thay đổi Văn bản trong TextCompositionEventArgs
- 16. SQL Server: chuyển đổi ((int) năm, (int) tháng, (int) ngày) để Datetime
- 17. Thay đổi cột dữ liệu từ varchar (max) thành nvarchar (max) trong SQL Server 2008
- 18. sql server 4 byte unsigned int
- 19. xóa bóng bên trong của kiểu nhập văn bản
- 20. Thay đổi loại cột có số từ varchar thành int
- 21. Pivots với cột động trong SQL Server
- 22. MS Access SQL, thay đổi kiểu dữ liệu
- 23. Thay đổi màu văn bản trong trường văn bản
- 24. postgres thay đổi kiểu dữ liệu của view cột từ unkown văn bản
- 25. Kiểu dữ liệu XML Trong truy vấn SQL Server 2008
- 26. Phát hiện các thay đổi có lập trình trên văn bản kiểu nhập
- 27. Căn chỉnh văn bản ngay trong SQL Server
- 28. Phương pháp hiệu quả nhất để phát hiện thay đổi cột trong MS SQL Server
- 29. Làm cách nào để kiểm tra xem cột văn bản SQL Server có trống không?
- 30. Tạo kiểu chữ nhập văn bản
'văn bản' hoặc 'varchar'? –
Có một vài câu trả lời sẽ giúp bạn giải quyết vấn đề của bạn, nhưng tôi chỉ muốn thêm rằng kiểu dữ liệu TEXT có rất nhiều "gotchas". Bạn gần như chắc chắn tốt hơn khi sử dụng VARCHAR (MAX) hoặc NVARCHAR (MAX) giả sử rằng bạn tại SQL 2005 hoặc mới hơn. Thậm chí nếu không, hãy cân nhắc sử dụng VARCHAR hoặc NVARCHAR rất lớn để thay thế. –
bất kỳ lý do cụ thể nào cho văn bản thay vì nvarchar (tối đa)? – DForck42