我在这个 TSQL(类似运算符)中缺少什么?
select c.*
from syscolumns c join sysobjects o on o.id=c.id and o.name = 'orders'
返回
Id
Customer
Product
03-28-2011
04-04-2011
04-11-2011
04-18-2011
这是正确的。但我只想要与模式 99-99-9999 匹配的列。所以我尝试了 where cast(o.name as varchar) like '%-%-%'
,但没有返回任何结果。然后我尝试了这个: where cast(o.name as varchar) like 'P%'
(我期望得到“Product”),它也没有返回任何内容。为什么???我应该使用什么语法来获取“日期”列?
谢谢!
select c.*
from syscolumns c join sysobjects o on o.id=c.id and o.name = 'orders'
returns
Id
Customer
Product
03-28-2011
04-04-2011
04-11-2011
04-18-2011
This is correct. But I want only the columns that match the pattern 99-99-9999. So I tried this where cast(o.name as varchar) like '%-%-%'
which didn't return any results. Then I tried this: where cast(o.name as varchar) like 'P%'
(I expected to get "Product") and it also did not return anything. Why??? What syntax should I use to get the columns that are "dates" ?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于问题的每个部分...
日期模式匹配
您可以使用 [0-9] 指定范围。
因此,对于
99-99-9999
,您可以使用对于日期,您也可以使用ISDATE或类似的东西来限制进一步的
列过滤器
这些条件永远不可能全部为真,因为它们全部< /em> 位于
o.name
上,后
2 个应该位于查询中的
c.name
上最后
使用较新的 sys.columns 和 sys.objects。或者 INFORMATION_SCHEMA.COLUMNS 这可能是最好的
For each part of your question...
Date pattern matching
You can use [0-9] to specify ranges.
So for
99-99-9999
you'd haveFor dates, you can use ISDATE too or things like this to restrict further
Column filters
These conditions can never all be true because they are all on
o.name
and
The latter 2 should be on
c.name
in your queryFinally
Use the newer sys.columns and sys.objects. Or INFORMATION_SCHEMA.COLUMNS which is probably best here
您正在转换为 varchar 而不提供长度。我相信默认值为 1 这可以解释问题。
在强制转换语句中提供长度,如下所示。
编辑:否。强制转换和转换的默认值为 30。
http://msdn。 microsoft.com/en-us/library/ms176089.aspx
You are casting to varchar without providing a length. I believe that the default is 1 which would explain the problem.
Provide a length in the cast statement as follows.
Edit: No. The default for cast and convert is 30.
http://msdn.microsoft.com/en-us/library/ms176089.aspx