选择 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 数据库的连接字符串

仅显示选择 SQL 中的前 5 个字符?

如何检查 SQL Server CE 数据库的索引?

sql server中的怎么把数值型转换为字符串

Windows 应用程序 SQL Server Express / SQLite / SQL Server CE 的最佳选择是哪个? [关闭]