我有一个有10个输入参数的报告,其中只有两个是必需的,其余的是可选的。问题是,据我所知,如果在SELECT语句的WHERE条件中使用空白的输入参数,将不会从表中选择任何记录,那么如何解决这个问题呢? 让我们尝试一些简单的东西: SELECT * FROM contrat WHERE article = 'sumsung' AND price = null 用户输入了一篇文章,但没有输入价格,因此查询将不会返回任何内容,因为即使我们与sumsung文章签订了合同,价格也是空的
例如,我有一份声明
"SELECT * FROM Reports WHERE StartDate >= ? WHERE EndDate <= ? AND Performer = ?"
但是有时网页上的一些输入字段没有被填充,所以我不得不不考虑这个条件。也就是说,我没有填写开始日期,所以声明必须是
"SELECT * FROM Reports WHERE EndDate <= ? AND Performer = ?"
有3种不同的条件。那么,我需要编写8种不同的语句和DAO方法才能完成任务吗?真的?也许还有其他的解决办法?
编辑:我使用MySQL
我有3个简单的参数,它们都是文本,并且允许多个值和空值。没有可用的值或默认值,因为我希望用户自己输入值。将所有参数留空时,不会显示任何数据,因为没有空白值。但是,我希望在没有为参数输入值的情况下显示所有数据。我该怎么做呢?
这就是查询现在的样子
SELECT [PROGRAMNO]
,[ACCTNO]
,[CLAIMNO]
,[TOTALCHARGES]
,[TOTALPAYMENT]
,[TYPE]
FROM DATALINE
WHERE PROGRAMNO IN (@PROGRAMNO)
AND ACCTNO IN (@
我正在尝试使用sql语句来检查函数中的参数是否为空。如果它是null,它不应该做其他的事情,但是如果它不是null,它应该检查来自一列的某个值是否出现在另一列中。
所以应该是这样的
SELECT * FROM TableA
WHERE User IN (SELECT User FROM TableB WHERE Condition = @ParameterA)
AND File IN (SELECT File FROM TableB WHERE Condition = @ParameterB)
所以,我现在要做的是检查@ParameterA是否为空。如果是,则不应执行User IN [..
我有一个存储过程,它接受5个输入参数。存储过程返回的列是相同的,但条件根据传入的参数变化。
目前,我正在使用if, else-if检查不同的条件,并根据where条件选择语句。有人能帮我找到其他优化的方法吗?
更新:现在我有几乎14个参数,并检查条件与所有可能的组合。除了显式地给出所有条件之外,在SQL中是否有任何用于此检查的方法?
下面是存储过程的一部分:
if(@OwnerWWID is null and @OwnerEmailID is null and @SourceURL is null and @ServerName is null and @Wave is not null)
b
我在报表生成器中有一个多参数@route。我需要@route才能传递空白(‘'),当发生这种情况时,所有内容都显示在结果上,这将是我对参数@route的默认值。(通过where route LIKE '%‘+(LTRIM(RTRIM(@route)+’%‘实现)
基本上是这样做的:
SELECT *
FROM @finalTable ft
WHERE CASE WHEN @route = '' THEN route LIKE '%' + (LTRIM(RTRIM(@route))) + '%'
ELSE
我写了一个这样的函数:
function tim_kiem($tenchu,$sohieutoba,$sothututhu,$gia_dat){
global $dbh;
$where="1=1";
$tenchu = "%".$tenchu."%";
if($tenchu<>""){
$where=$where." and tenchu like :tenchu";
}
if($sohi
试图在LINQPad 4中运行此查询:
SELECT item_group_id as AccountID, IIF(ISNULL(t_item_group.description),'[blank]',t_item_group.description) AS Name
FROM t_item_group
WHERE active = TRUE
我得到,“isnull函数需要两个参数。”
我试着移动父母,把“空白”改为“空白”和“空白”,但这些都没有帮助.
由于这个原因,LINQPad无法运行的查询(我有两个类似的查询(使用IIF(ISNULL)),但它们实际上运行得很好(
我有一张桌子
t3:([]a:2 3 4;b:`CA`AB`)
我有一个问题:
select from t3 where b in ?[a=2;`CA`AB;`AB]
邦。它给了我一个长度错误。
但这些作品:
select from t3 where b in ?[a=2;`CA;`AB]
select from t3 where b in `CA`AB
想不出哪里出了问题?请帮帮我。谢谢。
我正在尝试编写SQL来根据代码中的一些代码条件更新多个列。
例如,使其成为两列中最简单的一列
UPDATE table set A = valueA where conditionA..
或UPDATE table set B=valueB where conditionA..
或UPDATE table set A=valueA, B=valueB where conditionA..
条件相同,但valueA/valueB可能不存在,具体取决于代码
有没有什么方便的方法可以将它们组合在一个WHERE 1=1 and <condition>中,比如select one SQL,
我有一个C#表单,它有一个用户可以用来执行搜索的6个过滤器(5个组合框和1个文本框)。问题是用户可以将其中一些保留为空白或全部使用。要进行筛选搜索,我使用并执行SELECT查询,但问题是,当某些筛选器为/为空白时,它将返回空白或空搜索。如果我将每个条件作为查询,我将有大约700左右的查询。所以我在这个链接中搜索了壁橱
using (SqlConnection conn = new SqlConnection(@"Data Source=(local);
Initial Catalog=inv
当我检查用户名或电子邮件是否已经被占用时,我正在尝试优化这个查询。
更优化是因为我相信可以创建一个查询来实现这一点?
select
(select count(Username) from User where Username = @Username) > 0 as "UsernameExist"
(select count(Email) from User where Email = @Email) > 0 as "EmailExist"
下面的查询将不起作用,因为如果用户名和电子邮件是针对不同用户的,我仍将得到1的计数。
select coun
我试图找到一种方法来修剪或删除看起来是空字符串中的空格,这样当我寻找一个min值时,就会得到一个带有字符的结果,而不是一个带空格的空字符串。
最初,我尝试排除空字段( !="“),但是,由于空字符串包含空格,在技术上它不是空字符串,所以我尝试微调,仍然无法得到所需的结果集。
select trim(Field_1) as Field_1
from Table_1
where Field_Date between '2019-08-01' and '2019-08-31'
and Field_1 != ""
order by Field_1
如果我有一个这样的参数化SQL语句:
SELECT * FROM table WHERE my_field = :field_value
有没有人知道PDO是否会将这个(见下文)识别为相同的SQL语句并使用缓存,而不是假设它是一个完全不同的SQL语句:
SELECT * FROM table WHERE my_field = :new_field_value
因此,我猜问题是:如果参数名在参数化的select语句中发生了更改,但其他任何内容都没有更改,我还能获得缓存的性能优势吗?或者我必须确保参数名保持不变?
我使用的是一个MS 2010前端,在这里我调用了存储过程和MS- SQl服务器2008后端,在那里我为存储过程应用了脚本。我创建了一个存储过程,用于检索TestID,其中输入参数与两个连接的tables.My中的值匹配,问题是试图捕获select语句通过输出参数返回的内容。这是我的SQL存储过程
CREATE PROCEDURE upGetTestIDForAnalyte @WOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60), @RecordsAffected int OUT
AS
SELECT TestID = t
我想重写这个查询,以便如果@UserName以空值传递,那么它会将Client_User排除在搜索条件之外。我只希望它按名称搜索,如果用户在网页表单上的用户名文本框中输入一个名称。我不知道该怎么做。
select * from weblogs.dbo.vwlogs
where Log_time between @BeginDate and @EndDAte
and client_user=@UserName
我不确定如何修复这个错误。当用户登录时,如果他们输入了错误的输入,我会得到一个空白页面。如果他们输入了数据库中不存在的信息。请帮助:)
login.php
<?php
include ("base.php");
include ("passwordchecker.php");
include ("functions.php");
$error = "";
function postInput($htmlName)
{
if(isset($_POST[$htmlName]))
只有当输入参数不是null时,才希望在where子句中添加比较参数。我尝试了下面的查询,但是它给了我错误。
CASE
WHEN (
(SELECT TOP 1 (AMOUNT + ISNULL((@p_iAmountRequested * FEEPERCENTAGE), 0.0))
FROM CONVEYANCERLEGALFEE VF1
WHERE VF1.CONVEYANCERLEGALFEESET = MP.CONVEYANCERLEGALFEESET
AND VF1.LOC
最近,一位黑客试图用睡眠注入来减缓我的网站。尽管我们正在使用像mysql_real_escape_string()这样的预防措施来覆盖大多数易受攻击的输入。我们正在通过查询字符串传递产品的id,它使命令如下:
$id = mysql_real_escape_string($_REQUEST['id']);
$qry = "Select * from products where id = ".$id;
但是黑客试图提供输入
?id=3 and sleep(4)
而查询变成
Select * from products where id = 3 and sleep
我已经创建了包含CarID、RegistrationNo、CarID_creation_date和Reg_Date的SSRS报告。此外,我还创建了日期参数,通过这些参数我可以选择日期范围。但是,如果我只输入CarID,那么应该只激活CarID_creation_date,其他字段模糊/禁用,反之亦然,我该如何创建报告呢?我尝试过从后端使用case语句进行查询,它工作得很好,但我想在SSRS报告中添加此可视化功能,那么如何添加相同的功能?
当前使用以下代码:IF @CarID='' and @RegID='' Begin SELECT * FROM Car_De
这个问题是关于PHP中的解析,而不是如何将MySQLi迁移到PDO。
我想将一些旧代码从MySQLi迁移到PDO。该站点有400多个字符串查询语句。我想修改代码以使用准备好的语句。
即皈依
$query = 'SELECT * from table where x='.$x.' and y > '.$y.' or (z<= 35 and auth like "%ed")'
$result = $conn->query($query);
至
$query = 'SELECT * from table whe
我在HTML页面上有一个复选框,我要使用它来确定应该在报告中包括或排除哪组员工。到目前为止,如果复选框未被选中,我只能得到包括所有员工而不考虑状态的查询,或者如果复选框被选中,则仅显示退休员工。('‘是复选框)
SELECT USERS.UserName AS "Last_Name", USERS.UserName_First AS "First_Name",
USERS.Retired AS "Retired"
FROM Employee USERS
WHERE
USERS.Retired IS NULL OR USERS.
背景:
我正在处理一个遗留的Server 2000数据库(是的,我正在更改它!)它有一个列,我们可以调用它的名称,它是nvarchar(100)和not null。我已经核实过了。
当我运行这个查询时:
select name
from mytable
where name is null
我没有得到任何结果。但是,当我运行此查询时:
select name
from mytable
where name = ''
我得到了大约100个结果。我想了解更多关于这些空白值的信息,因为空格在非空列中是合法的,所以我运行了以下查询:
select ASCII(substring(nam
我有一个返回数据的存储过程。
我需要根据传入的参数更改where子句。
例如,参数为:
@Region NVARHCAR(15)
@CountryCode NVARCHAR(2)
@ProductA BIT
@ProductB BIT
@ProductC BIT
如果传入@ region,则where应按地区选择,如果传入@CountryCode,则where应按国家代码选择。
对于产品,如果它们中的任何一个设置为true,则where应为该项目选择数据。
因此,如果传入@Region并将@ProductA和@ProductC设置为true,则语句可能如下所示:
SELECT *
FROM t
我使用这个SELECT查询:
SELECT sequence, company,
CONCAT(address1, '\r', address2, '\r', address3, '\r', town, '\r', county, '\r', postcode) AS address
FROM customer
WHERE company_status = 'Customer'
ORDER BY company ASC
但有时,某些地址列可能为null/空白,因此我不想包括它们
我在PHP中
我有一个SSRS报告,其中有一个文本框来输入值。用户可以输入单个值,也可以输入用逗号分隔的多个值。
我要调用的报表查询是:
Select Name, Place from UDetails where BatchNo IN (valuetypedintextbox);
如果用户键入A001,那么我的查询将返回正确的结果集:
Select Name, Place from UDetails where BatchNo IN ('A001')
但是,如果他们键入A001,A002 my query将不会返回正确的结果集,因为它将文本视为单个字符串:
Select Name, Pla
我有以下疑问:
SELECT ci.cid, ci.set, ci.year, ci.name, ci.cardvar, ci.comp, ci.grade, ci.pop, ci.cardnum
FROM uc
INNER JOIN ci ON uc.cid = ci.cardId
WHERE uc.uid = '$userId' and ci.name like '%$updateSearchCriteria%'
我希望将'updateSearchCriteria'包含在其他行中。因此,现在,如果用户输入一
我需要一些关于Mybatis/Java的帮助。
我的映射器中有以下选择:
<select id="findTxnByBusinessKey" parameterType="map" resultType="data.Transaction">SELECT
t.id, *MANY OTHER FIELDS NOT SHOWN HERE* FROM txns t
where source=#{source} and userid=#{userid} and transactiontype=#{transactio
我希望从html表单中获取一个用户输入,并通过将一列与用户输入相匹配来进行选择,这样可以安全地进行注入。但是我希望用户输入是一个逗号分隔的列表。例如,如果该列被称为"name“,而user_input为"Alice,Bob,Carrol”,则我会执行查询。
SELECT FROM table WHERE name IN ("Alice","Bob","Carrol");
这意味着我有同样的问题,在这个问题,。但当然,我不想自己做串连以避免注射。同时,由于user_input中可能有任意数量的逗号,所以我不能这样做:
db.exec