我有一个在SQL中工作的简单SQL查询:
select txdate, acct from trans where txdate = '1/31/2017'
我无法让它在C#上工作:
DateTime sDate = dtStart.Value; // date time picker
// connect to server
SqlCommand cmd = new SqlCommand("select txdate from trans where txdate = '@sdate'", cx);
cmd.Paramet
我的一位同事发现了我不知道的SQL Server中的一种行为。
CREATE VIEW dbo.vRandNumber AS
SELECT RAND() as RandNumber
GO
CREATE FUNCTION dbo.RandNumber() RETURNS float AS
RETURN (SELECT RandNumber FROM vRandNumber)
GO
DECLARE @mytable TABLE (id INT)
INSERT INTO @mytable SELECT 1
INSERT INTO @mytable SELECT 2
INSERT INTO @my
这是我的SQL函数
IF OBJECT_ID (N'dbo.limit','FN' ) IS NOT NULL
DROP FUNCTION limit;
Go
create function dbo.limit(@State_code varchar)
RETURNS nvarchar(max)
AS
BEGIN
DECLARE @ret varchar(max) ;
SELECT @ret = State_Name
FROM aqs_sites
WHERE aqs_sites.State_Code = @State_code and State_Name
我尝试在mariadb (最新的稳定版)中创建函数。我想通过公司id (int)获取所有数据 CREATE FUNCTION getByCompId (cid INT)
RETURN (SELECT * FROM companies WHERE id=cid); end当我尝试创建时,我得到错误: SQL Error [1064] [42000]: (conn=111) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the r
我有下面的函数,在Server中,在PostGreSQL中,以及在Oracle中使用的版本(不是使用SELECT,而是使用参考游标)。我们在HANA中的函数将在hdbsql命令行上使用警告进行编译,但是在ODBC调用中执行时,它会抛出一个异常。我用来测试的数据库(不幸的是)是版本1 db。
CREATE OR REPLACE FUNCTION GETWFFIELD
(
IN TABLENAME VARCHAR,
IN FIELDNAME VARCHAR,
IN LANGCODE VARCHAR,
IN WORKID DECIMAL,
IN SUBWORK
哼,今天我发现了一个关于sql的问题。
SELECT * FROM tb_users where deleteFlag != 1 ORDER BY createTime LIMIT 0, ?
来自mybatis:
<select id="findListByNearly" resultType="org.destiny.model.User">
SELECT
<include refid="Base_Column_List"/>
FROM tb.users
WHERE stat
我将数据保存在sql server数据库中,我用它在asp.net (c#)中绘制图形,一个字段是INT,另一个是datetime,此时图形只为表中的所有数据绘制,我想知道是否有任何方法可以在sql字符串中添加一条语句,说明只针对今天、本周或本月。
这是目前我的sql字符串:
SelectCommand="SELECT [Time], [Temp] FROM [test2] ORDER BY [Time]"<br>
日期时间的格式为"2011-03-29 00:46:06.377“
我在sql server中有一个这样的代码。
IF EXISTS (SELECT * FROM address WHERE new_add=new_add)
UPDATE address set old_add=old_add);
ELSE
UPDATE address set old_add=new_add);
它在SQL Server中工作正常。但它在oracle中不起作用。它显示了
SP2-0734: unknown command beginning "IF EXISTS ..." - rest of line ignored.
请帮我把这个查询从SQ
我有一个sql查询,它在SQL Server中工作得很好,可以得出由特定供应商提供的商品的最后购买率,如下所示:
Select Top 1 Rate
From TXPurchaseDetail
Where CompanyCode = 200
And VoucherSeries = 'INPURSCR'
And SupplierCode = 1042
And ItemCode = 1521
And voucherdate <= '2011/05/25'
我使用的是MySQL,我有一个名为constructions的表,其中有一个名为phone的列,电话号码的格式为9876543210,但我想清理有字母和符号的列。
我使用的是:
select * from constructions where phone like '[a-Z]%';
但这是错误的,我猜它在SQL-Server中是有效的。
在给定的视图下
create view MyView as
select Id, ExpensiveFunction(Name) as Expr from MyTable
如果在查询中使用
select *
from AnotherTable a
inner join MyView b on b.Id = a.Id
是否为MyTable中的每一行计算ExpensiveFunction,或者SQL Server是否足够智能,可以首先连接到AnotherTable,然后只对筛选出的行调用ExpensiveFunction?
如果MyView是子查询或TVF,它的行为是否会有所不同?
我有这个工作良好的c++代码,我可以从表中读取并写入表:
int main()
{
// Try to get a driver to use to connect to our DBMS
try
{
driver = get_driver_instance();
}
catch (sql::SQLException e)
{
cout << "Could not get a database driver. Error message: " << e.what() &
我刚刚在SQL Server 2012中开始分页,并且我试图在应用分页之前获得总行数,但我的问题是我的视图中有太多的函数调用,这会大大减慢它的速度。
我已经看过了这篇文章,我最终得到了一个查询,在数据库中没有完整数据集的情况下,运行时间为39秒。
SELECT *
, COUNT(TaskId) OVER()
FROM TaskVersionView
WHERE (.. ~10 predicates here .. )
ORDER BY StartDate
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY
如果没有计数,它只需要不到1秒。
我本以为S
我是Oracle专家,但不是Server,我试图翻译我的代码以在Server中使用。
我的Oracle代码:
create or replace
FUNCTION CheckAndCreateTable
(
TBL_NAME IN VARCHAR2 ,
STMNT in varchar2
) RETURN number AS
Cnt Pls_Integer;
begin
select COUNT (TABLE_NAME) into CNT from USER_TABLES where UPPER(TABLE_NAME)= UPPER(TBL_NAME);
if (C
大家好,我有一个关于Sql Server(Len)和Mysql(Length)的问题
我已经用Sql Server和Mysql编写了一个示例脚本,如下所示
Sql ---->select len('Experts ')
Result ---->7
MySql ---->select Length('Experts ')
Result ---->8
现在,我在query中做了如下更改
Sql ---->select len(' Experts')
Result ---->8
MySql ----&g
我编写了下面的vba函数,目的是将SQL记录集返回到单元格中。当我使用这个函数时,会得到#值错误。它应该得到两个参数,即两个单元格,只需返回Yes或No。我检查了SQL查询,它在作为子例程编写时运行良好。所以请原谅我用*替换了一些sql命令
Public Function TrRe(No1 As String, No2 As String) As ADODB.Recordset
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim SourceText As String
Set cn = New ADODB.Connection
在SQL Server 2008上执行时,结果会按预期随机顺序出现。但在SQL Server 2012上执行时,结果的顺序与主表asc中的顺序相同。
找不到我的不足之处。这是我在SQL Server 2008和SQL Server 2012中运行的查询。
insert into CategoryImage1(ImageId, categoryid, thumbnail,
ImageName, GridviewImage, CreatedOn, ModifiedOn, Coordinates, ActiveFlag)
select
imageid, categoryid, t
我想编写一个SQL函数,如果某个INSERT插入了一行,则返回false,如果没有插入行,则返回D2。在这个用例中,我们知道最多可以插入一行。
我想出了以下解决方案:
create function test() returns boolean as
$
with
dummy as
(
insert into ...
select ...
from ...
where ... -- this will limit to at most one ro
我想得到RollNo,如果它是存在的,当某些条件满足时,否则它应该返回-1。但在我的示例中,它在当前时返回RollNo,否则它将不返回nothing。
SQL位于:-
SELECT iif(isnull(RollNo),-1,RollNo) from students where SName = "sf" and FName= "da" and
DOB=#7/16/2020# and ClassID = 0
SQL Server (2000/2005)函数获取表名和字段名作为参数,并从函数中的动态查询返回结果。应该将结果赋值给一个Table变量,该变量将在存储过程中进一步使用。如何做到这一点?
我收到错误:“只有函数和扩展存储过程才能从函数中执行。”
Declare @Data as table (FieldValue varchar(100))
insert into @Data select * from MyFunction ('Person.Address','AddressID')
-- Function
Alter function MyFu
从SQL Server 2016到2019版本,函数发生了一些变化。
这是测试函数:
create function [dbo].[TestFunction]
(
@input uniqueidentifier
)
returns uniqueidentifier
as
begin
select top 0 @input = id from randomTable;
return
(
select @input
)
end
如果我在SQL Server 2016中尝试此代码,结果为输入值,但在SQL Server 2019中,结果为n
我知道这里有一些关于phpMyAdmin和VB.Net之间奇怪行为的帖子,但是当在VB.Net中使用MySQL连接器(VS 2017)时,我遇到了一个非常奇怪的情况。
使用MySQLData.dll版本= 6.10.6.0
Database server
Server: Localhost via UNIX socket
Server type: MySQL
Server connection: SSL is not being used Documentation
Server version: 5.6.43 - MySQL Community Server (GPL)
Protocol v
我已经在SQL server中创建了一个用户定义的函数。是否可以像其他内置函数一样,在select语句中调用这些函数?
Create function [dbo].[TIME_TO_SEC](@inputTime time)
returns INT
As
Begin
DECLARE @secDiff INT = datediff(second, '00:00:00', @inputTime)
return @secDiff;
end
目前称其为:
DECLARE @ret int;
EXEC TIME_TO_SEC @inputTime='01:00
我使用JTDS作为连接SQL服务器的驱动程序。
下面是给我带来问题的查询:
SELECT EmpID,FirstName,LastName,CompanyName,DepartmentName,JobTitle,HireDate FROM Employees where UPPER(FirstName) LIKE 'KEVIN%'
它在SQL Server上返回2行。一个是大写的“Kevin”,另一个是像这样的“Kevin”。我使用了通配符,以确保获得两个结果。在我的EmployeeDAO类中,我使用了以下内容:
ps = con.prepareStatemen
我正在尝试计算行数,并将该计数值传递给一些逻辑。代码如下:
static public int GetNoImagesofMakeID(int makeID)
{
string sql = "Select COUNT(*) from makeImages";
SqlDataAdapter da = new SqlDataAdapter(sql, ConnectionString);
DataTable dt = new DataTable();
da.Fill(dt);
return Convert.ToInt32(dt.Rows.
如何将嵌套存储过程的值插入到表中。例如,如果我创建了一个这样的存储过程。
Create procedure New
begin
create table #tmp
(
id int,
name varchar(50)
);
insert into #tmp
exec stored_procedure 1,2;
insert into #tmp
exec stored_procedure 1,2;
将应用程序从SQL Server 2012迁移到SQL Server 2017。
我对数据导入运行以下两个查询(Name是包含非英语字母的varchar列)。
select Name from RemoteServer.RemoteDB.dbo.RemoteView
select coalesce(Name,'') from RemoteServer.RemoteDB.dbo.RemoteView
在SQL 2012上,结果是相同的。在SQL 2017中,我看到了以下内容:
原因是什么?
不幸的是,我不能将远程服务器上的数据类型更改为nvarchar。
更新:更多信息
在查询的最后一条语句中,我引用了Table2中不存在的列,SQL Server不验证该错误,在执行后,我获得了Table1中存在的所有列,但没有任何行。
我认为这是错误的,因为返回值告诉我们WHERE查询没有找到任何行,而不是抛出错误。
您能解释一下为什么SQL Server会有这样的行为吗?
使用SQL Server 2014,SSMS 2016编写。
IF OBJECT_ID('dbo.Table1', 'U') IS NOT NULL
DROP TABLE dbo.Table1;
CREATE TABLE Table1
(
ID
我曾经使用数据集而不是sqldatareaders,并且我曾经能够这样做
If dataset.tables(0).Rows(0)(1).ToString()) = "N" Then
lbl.Text = dataset.tables(0).Rows(0)(2).ToString())
Else
'Do Nothing
End If
这显然不适用于sqldatareaders。
我使用代码来查看SQLDatareader是否有行,但是想知道是否有一种方法可以获得每行的值
我猜这是可能的,我已经环顾四周,但似乎找不到任何东西
Dim conn As SqlC