考虑以下查询
SELECT table_name AS SqlColumnTableName,
column_name AS SqlColumnName,
data_type AS SqlColumnType,
CASE
WHEN is_nullable = 'YES' THEN 1
ELSE 0
END AS IsNullable,
CASE
WHEN numeric_scale = 0 THEN 'Int'
WHEN Isnull(numeric_precision, 0) > 0 THEN 'Decimal'
WHEN Isnull(datetime_precision, 0) > 0 THEN 'DateTime'
WHEN character_set_name IS NOT NULL THEN 'String'
WHEN data_type = 'bit' THEN 'Bool'
END AS CLR_Type,
CASE
WHEN column_name IN(SELECT column_name
FROM information_schema.key_column_usage) THEN 1
ELSE 0
END AS IsPrimaryKey
FROM information_schema.columns
使用此查询我获取有关列的一些信息,包括其名称和表名称,如果它是主键列,但是我试图找到一种生成字符串的好方法,具体取决于列的sql类型你可以在这个案例中看到陈述
CASE
WHEN numeric_scale = 0 THEN 'Int'
WHEN Isnull(numeric_precision, 0) > 0 THEN 'Decimal'
WHEN Isnull(datetime_precision, 0) > 0 THEN 'DateTime'
WHEN character_set_name IS NOT NULL THEN 'String'
WHEN data_type = 'bit' THEN 'Bool'
END AS CLR_Type,
有没有比我建议的更方便的方式?
答案 0 :(得分:1)
创建一个小表,使用SQL-CLR Type Mapping将DATA_TYPE映射到CLR_TYPE并加入其中。得到所有类型的东西不应该太多切割和粘贴。
另外,你确定你不想为此使用LINQ吗?你可能正在重新发明轮子。