열 이름을 사용하여 열의 데이터 형식을 가져와야합니다. 나는 C#으로 코딩하고있다. 상황을 좀 더 정확하게 표시 할 수 있도록 일부 날짜를 varchar로 변환하는보기가 있습니다 (정확한 시간없이). 그러나 이는 열의 데이터 유형이 이제 올바르지 않음을 의미합니다. 내가 뭘하고 싶은지는 열 이름을 사용하여 DataTable 스키마에서 열을 조회 한 다음 해당 열의 데이터 유형을 얻는 것입니다. 이 경우보기보다는 주 테이블에서 실제 데이터 유형을 수집합니다. 아이디어?열 이름에서 데이터 형식 가져 오기
답변
은 DataTable.Columns
속성은 DataType
속성을 가진 DataColumn
를 얻을 수 indexed by column name을 할 수있는 DataColumnCollection
입니다.
값에서 유형을 유추하지 않으면 어떻게되는지 알 수 없습니다. 뷰의 결과와 코드의 열 이름이있는 경우 뷰가 사용하는 테이블에 대한 정보는 그 시점에서 손실됩니다.
이름을 알고 있으면 테이블 정보를 얻을 수 있습니다.
SELECT TOP 0 * FROM <<tableName>>
또는 사용 DMV에 : 그 간단한 같은 쿼리를 사용하거나 수행 할 수 있습니다 첫 번째 경우에
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('<<tableName>>')
을, 당신은 당신의 열을 찾기 위해 행을 통해 IDataReader에에 GetSchemaTable을 사용하여 반복 이름으로; 두 번째 경우에는 결과 집합 자체를 반복하고 그 방식으로 열을 찾을 수 있습니다.
내가 테이블의 스키마 벌금을 얻을 수있다, 난 그냥 열 이름으로 해당 테이블의 컬럼의 데이터 유형을 알아야합니다. 예를 들어 Name, Birthdate, Age 열이있는 테이블이 있다고 가정 해보십시오. Birthdate라는 열의 데이터 형식을 알고 싶습니다. 하지만 내가 가진 것은 테이블 스키마와 열 이름뿐입니다. – steventnorris
어떤 형식으로 테이블 스키마가 있습니까? –
SqlDataReader 개체에서 GetSchemaTable()을 사용하여 얻은 DataTable C# 개체입니다. – steventnorris
SQL Server를 사용하는 경우 SET FMTONLY를 사용할 수 있습니다. 클라이언트에 메타 데이터 만 반환합니다. 실제로 쿼리를 실행하지 않고도 응답 형식을 테스트하는 데 사용할 수 있습니다.
SqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "SET FMTONLY ON; select column from table; SET FMTONLY OFF";
SqlDataReader reader = cmd.ExecuteReader();
SqlDbType type = (SqlDbType)(int)reader.GetSchemaTable().Rows[0]["ProviderType"];
씨 : StackOverflow
INFORMATION_SCHEMA.COLUMNS는 표는 sys.columns 테이블보다 필요에 대한 더 명확한 정보를 제공합니다. 다음 시도 할 수 :
SELECT data_type, character_maximum_length
FROM information_schema.columns
WHERE table_name = 'tableName' AND column_name = 'columnName'
- 1. 데이터 소스 이름에서 인스턴스 이름 가져 오기
- 2. UI없이 데이터 형식 가져 오기
- 3. 항목의 콘텐츠 형식 열/메타 데이터 가져 오기
- 4. 클래스 이름에서 인스턴스 가져 오기
- 5. 이름에서 뷰 ID 가져 오기
- 6. 파일 이름에서 mimetype 가져 오기
- 7. 열 위치 가져 오기
- 8. SQL에서 일치하는 열에서 열 데이터 가져 오기
- 9. flex 데이터 격자의 열 값 가져 오기
- 10. EntityFramework Join 문에서 열 데이터 가져 오기
- 11. Python 가져 오기 MySQL에서 배열로 데이터 열
- 12. 열 데이터 형식
- 13. JQgrid : Json 데이터 가져 오기
- 14. .NET에서 파일 형식 가져 오기
- 15. 다른 언어의 이름에서 월 번호 가져 오기
- 16. 프로세스 이름에서 응용 프로그램 이름 가져 오기
- 17. 함수 이름에서 내장 함수 가져 오기
- 18. 호스트 이름에서 IP 주소 가져 오기
- 19. 이름에서 언어의 ISO 식별자 가져 오기
- 20. 프로세스 이름에서 프로세스 ID 가져 오기
- 21. PHP 추상화 레이어 - 이름에서 클래스 가져 오기
- 22. 창 클래스 이름에서 창 핸들 가져 오기
- 23. GUID에서 형식 가져 오기
- 24. varbinary 데이터 가져 오기
- 25. C#에서 Excel 셀의 데이터 형식 가져 오기
- 26. 행마다 열 유형 가져 오기
- 27. 데이터 가져 오기
- 28. 열 이름에서 문자열 자르기
- 29. 개체에서 데이터 가져 오기
- 30. 열 데이터 형식 및 형식 변경
SqlDataReader 개체에서 GetSchemaTable()을 사용하여 DataTable에서이 작업을 수행 할 수 있습니까? – steventnorris
GetSchemaTable은 DataTable을 반환하므로 제대로 작동합니다. – kol
글쎄, 스키마 테이블은 SQL 테이블의 열 이름을 보유하지 않는 것 같습니다. 각 행은 SQL 테이블의 열을 나타내며 열은 속성 (예 : 열 이름 및 데이터 형식)이므로이 메서드는 작동하지 않는 것 같습니다. – steventnorris