Al *_*ndo 2 sql sql-server ssms
我有一些使用bit数据类型的列.最终用户现在想要一个N/A选项,所以在我使用一点来捕获"是/否"之前(1为是,0为否)我现在需要有三个选项是/否/ NA我可以存储就像在文本中一样varchar.
有没有办法将列的数据类型更改bit为varcharAND还更新当前记录数据,其中任何0我更改为"否",1我更改为"是"?
为什么不用NULL来表示"不适用"?
否则使用TINYINT包含值0,1和2(或者可能是1,2和3)及其含义的查找表.然后在两个表之间添加FK以强制只输入这些值.
在最后的选择是去同一个CHAR(1)列.这将是确定只有当您还指定了一个二进制排序规则,如Latin1_General_100_BIN2.二进制排序规则将使您不会失去其他两个选项的性能.如果没有二进制排序规则,字符串列会将值与语言规则进行比较,这些规则需要额外的时间,但对此用法没有任何意义.你还需要一个AFTER INSERT, UPDATE触发到第一UPPER()一致性这个值,然后执行所有的值或者是Y,N,或A(对于"N/A").这比0,1和2(通过TINYINT)更具可读性,并且同样有效地进行搜索,也只有1个字节,但是BUT使用时需要记住仅指定大写字母,否则它们可能无法获得预期结果.
没有理由在所有使用VARCHAR(3)并存储满值N/A/ Yes/ No,除非你只是不关心系统越来越慢;-).
| 归档时间: |
|
| 查看次数: |
2702 次 |
| 最近记录: |