选择 SQL Server CE 中的前两个字符
Posted
技术标签:
【中文标题】选择 SQL Server CE 中的前两个字符【英文标题】:Select the first two character in SQL Server CE 【发布时间】:2012-05-08 01:15:27 【问题描述】:[回答]
谢谢大家!解决问题的代码如下:
SELECT ID
FROM Schedule
WHERE (SUBSTRING(Time, 1, 2) = DATEPART(hh, GETDATE()))
如何在SQL Server CE中选择前两个字符?
例如:
+-----+-----------+------------+
+ Day + Time + ID +
+-----+-----------+------------+
+ 1 + 08:00:00 + A1 +
+ 1 + 09:00:00 + A2 +
+ 1 + 09:30:00 + A3 +
+ 1 + 10:15:00 + A4 +
+-----+-----------+------------+
Time
列是 nvarchar
类型。
然后,我只想选择ID
,只选择基于实时时间的时间,就像只从08:00:00
中选择08
部分一样。我该怎么做?
【问题讨论】:
您的时间列不应该是 VARCHAR 类型;它应该是 TIME 类型。 什么数据库引擎? MSFT、Oracle、DB2 都为此使用了不同的方法。 请记住识别您正在使用的 SQL DBMS 和您的表的名称(如果只是为了使答案都可以使用相同的名称 - 它可以是一个为目的而编造的名称的问题)。 答案完全取决于产品(有一个标准,但许多数据库没有实现它)。请指定您使用的 SQL 方言。 【参考方案1】:SUBSTRING 在 CE 中可用 - http://msdn.microsoft.com/en-us/library/aa275646(SQL.80).aspx
SUBSTRING ( expression , start , length )
【讨论】:
【参考方案2】:SQL Standard 方法由语法图给出:
<character substring function> ::=
SUBSTRING <left paren> <character value expression> FROM <start position>
[ FOR <string length> ] [ USING <char length units> ] <right paren>
因此,在本例中:
SELECT SUBSTRING(Time FROM 1 FOR 2) FROM AnonymousTable;
一些 DBMS(Oracle 和那些模拟 Oracle)提供了一个 SUBSTR() 函数来代替:
SELECT SUBSTR(Time, 1, 2) FROM AnonymousTable;
1
是起始偏移量,从 1 开始计数,2
是长度(不是结束偏移量,尽管在本示例中它们是相同的,并且任何其他起始偏移量都是 1)。
对于您的特定 DBMS,可能还有其他方法。例如,使用 Informix,您可以编写:
SELECT Time[1,2] FROM AnonymousTable;
但这一次,下标是开始和停止位置。
Informix 支持所有这三个。我不知道任何其他使用下标表示法的 DBMS。
【讨论】:
它无法工作。它返回:The function is not recognized by SQL Server Compact. [Name of function = SUBSTR, Data type (if known) = ]
好的 - 现在您知道为什么提前指定 DBMS 很重要了。
@mrjimoy_05:感谢您接受我的回答,但“接受”属于Chris Gessler,因为他为您提供了 SQL Server 所需的语法,而我的回答更为笼统。请不接受这个答案,而是接受他的答案。 (不过,如果你还没有给我投赞成票,我会很乐意接受。)谢谢。
哦,对不起。因为我认为因为你的回答给出了关于问题的详细解释,所以我选择接受你的回答。不过,谢谢你的建议。 :)【参考方案3】:
你的意思是这样吗?
SELECT LEFT(Time, 2) From Table
【讨论】:
没错。但它无法工作。它返回:The function is not recognized by SQL Server Compact. [Name of function = SUBSTR, Data type (if known) = ]
以上是关于选择 SQL Server CE 中的前两个字符的主要内容,如果未能解决你的问题,请参考以下文章
保存选择查询中的值,然后在更新查询 SQL Server CE 中使用它们
Windows Forms 应用程序用于访问 Windows Phone 中的 SQL Server CE 数据库的连接字符串
Windows 应用程序 SQL Server Express / SQLite / SQL Server CE 的最佳选择是哪个? [关闭]