在Where子句条件内传递值的子字符串

时间:2018-08-30 09:36:04

标签: sql sql-server

我需要在where子句语句中传递参数值的子字符串

参数值为pmtr:CN

查询:

我想使用下表从下表中过滤CAN国家/地区,但我的参数值保留一位2位数字(CN),但是我必须从拥有3位数字(CAN)的数据库中过滤加拿大国家/地区的记录。我正在尝试获取参数值第一位置的子字符串,然后附加硬编码的字符“ A”,然后在下面的查询中再次获取参数值第二位置的子字符串。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.testlayout.MyViewGroup
        android:id="@+id/parent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:gravity="top|right">
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="top|right"

            android:text="Hide" />

    </com.testlayout.MyViewGroup>
</RelativeLayout>

尝试了子字符串功能,没有任何结果。有什么办法可以使用sql达到过滤条件?

2 个答案:

答案 0 :(得分:0)

尝试使用变量:

declare @var =concat(pmtr[1,1],'A',pmtr[2,1])
Select a,b 
from tab 
where a=@var

答案 1 :(得分:0)

如果您只想过滤加拿大(CN):

Select a,b 
from tab 
where CASE WHEN pmtr = 'CN' and a= 'CAN' THEN 1 ELSE 0 END =1

注意:这具有硬编码条件。