sql语句中是不是最好都定义成varchar类型?

新溪-gordon 2009-11-13 01:59:59
最近研究发现这样一个规律:
sql语句中,什么DateTime, int....其实都用varchar来实现,而且这样处理起来好像还容易一些。

另:因为由于我们开发用的数据库不一定是什么,所以sql那些特殊的函数基本上都不能用

问:但微软既然有这种类型,肯定有它存在的道理。现在我想知道的是用这些除varchar外的类型而不用varchar除了在应用特殊函数的时候有用之外在别的地方也有用吗?
...全文
266 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
bancxc 2009-11-14
  • 打赏
  • 举报
回复
存在即合理
新溪-gordon 2009-11-14
  • 打赏
  • 举报
回复
楼上的,我不是问varchar与char的关系
netcup 2009-11-13
  • 打赏
  • 举报
回复
sql2005 INSIDE SQL系列丛书里有一本书讲过VARCHAR和CHAR的性能问题.记得好象是存储引擎那本.具体忘记了.但是里面记得也讲的是固定精度的数据就用CHAR,不固定变化的用VARCHAR.似乎有原理方面的分析.你自己找下吧
新溪-gordon 2009-11-13
  • 打赏
  • 举报
回复
不能加分了,但大家一定加油讨论这个问题
新溪-gordon 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 feixianxxx 的回复:]
自增列 是INT 不是么?
时间函数 对应的都是 DATETIME 不是么?
数学函数 对应的都是 INT decimal之类的 不是么?
[/Quote]

这儿的时间,由于不能用它自带的函数(因为数据库不一定是ms sql)
所以主要是可以用varchar来代替DateTime和Int两种,大家下面再帮忙看看现在这个问题吧
新溪-gordon 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xiequan2 的回复:]
实际中用的最多的是varchar,很多都可以用varchar来处理是对的,但为了高效,并不建议这样做,因为这样会有很多隐式转换;
[/Quote]
我要的是这样的回答,我想知道原因
当然,我说的不严密,就像下面这位朋友说的一样

[Quote=引用 8 楼 ws_hgo 的回复:]
SQL code(1)自增列 (intidentity(1,1)primarykey)
(2)bit类型(1or0)
(3)文本类型(Text)
(4)货币类型(money)
时间类似可以转换下
[/Quote]
多谢这位朋友指出,这儿声明一下:
1.不用自增列
2.bit,Text不在这个范围
3.money类型,也用varchar实现(一般对货币要求不高)
忆轩辕 2009-11-13
  • 打赏
  • 举报
回复
看实际需要而定,你用不到不一定别人用不到
ai_li7758521 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xiequan2 的回复:]
实际中用的最多的是varchar,很多都可以用varchar来处理是对的,但为了高效,并不建议这样做,因为这样会有很多隐式转换;
[/Quote]。
netcup 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xiequan2 的回复:]
实际中用的最多的是varchar,很多都可以用varchar来处理是对的,但为了高效,并不建议这样做,因为这样会有很多隐式转换;
[/Quote]
同意这个。。。。
wujinjian2008n 2009-11-13
  • 打赏
  • 举报
回复
哈哈 跟我一样 能用 nvarchar 就用nvarchar 方便
gcw633 2009-11-13
  • 打赏
  • 举报
回复
貌似楼主是来散分的,我来接吧
laker_914 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 z416177937 的回复:]

另:因为由于我们开发用的数据库不一定是什么,所以sql那些特殊的函数基本上都不能用

[/Quote]

有些函数是通用的啊,像sum , max ...
dawugui 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 herowang 的回复:]
这个不行,否则sql server 就给你规定一种字符串的数据类型就行了,何必定义这么多数据类型呢?
[/Quote].
xiequan2 2009-11-13
  • 打赏
  • 举报
回复
实际中用的最多的是varchar,很多都可以用varchar来处理是对的,但为了高效,并不建议这样做,因为这样会有很多隐式转换;
xiequan2 2009-11-13
  • 打赏
  • 举报
回复
嘿嘿,相信自己
panxinbeier 2009-11-13
  • 打赏
  • 举报
回复
看需要,不要盲目地用varchar
  • 打赏
  • 举报
回复
这个不行,否则sql server 就给你规定一种字符串的数据类型就行了,何必定义这么多数据类型呢?
winstonbonaparte 2009-11-13
  • 打赏
  • 举报
回复
看需求的,也不要所有的都定义成varchar
华夏小卒 2009-11-13
  • 打赏
  • 举报
回复
情况不同,各用各的
ws_hgo 2009-11-13
  • 打赏
  • 举报
回复
(1)自增列 (int identity(1,1) primary key)
(2)bit类型(1 or 0)
(3)文本类型(Text)
(4)货币类型(money)
时间类似可以转换下
加载更多回复(7)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧